Zmiana właściwości uruchomieniowej obiektu

0

Witam

Mam taki problem - na formie znajduje się obiekt tadoconnection z ustawionym connection string w stanie connected = true.
Po uruchomieniu programu automatycznie łączy się do bazy.
Chciałbym programowo podmieniać connection string na inny z pliku konfiguracyjnego - więc ustawiam connected = false i po uruchomieniu programu programowo podmieniam connection string i łącze się do bazy.
W czasie pracy jednak tadodonnection wygodnie żeby było połączone (np. wczytanie listy pól tadotabele) - zapominam potem przed kompilacją ustawić connected na false i gotowy excec najpierw łączy się do domyślnie wpisanej bazy w connection string bez mojej "woli".
Czy mogę w kodzie jakoś np. w module głównym przed utworzeniem formy zmienić właściwości obiektów - konkretnie tadoconnection - connected = false ?

1

W firedac jest do tego opcja bezpośrednio w object inspectorze:

screenshot-20210525131853.png

Co do samego ADO natomiast to spróbowałbym w konstruktorze formy lub w sekcji initialize podmienić connection stringa :)

0

@woolfik: 1. W przypadku firedac to specjalna właściwość obiektu a mi chodzi o uogólnienie dla wszystkich obiektów delphi
2. Niestety przed create formy nie istnieją obiety na formie wiec nie można się odwołać do ich właściwości.

1
  1. Nie musisz zmieniać wszystkich obiektów bo jak rozłączysz ADOConnection to pozostałe komponenty też się rozłączą. Działa to tak zarówno w przypadku FireDAC jak i ADO, ZeosLIB, UniDAC itd bo wszystkie one finalnie dziedziczą z TDataSet, który takową metodę jak ACTIVE posiada ;)
TMyForm = class(TForm)
  ADOConnection1: TADOConnection;
public
  constructor Create(AOwner: TComponent); override;
end;
--
constructor TMyForm.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ADOConnection1....;
end;
0

@woolfik:

  1. to wiem.
  2. Nie bardzo rozumiem - co mi to da - sam utworzę ADOConnection w TMyForm.Create ale dalej przed jego utworzeniem nie mogę zmienić jego właściwości connected na false, Pamiętany jest stan ustawiony w czasie kompilacji.

Ja chcę żeby obiekt AdoConnection podczas tworzenia miał connected=false bez względu jaki stan ustawię przed kompilacją w object inspector.

0

Sprawdziłem ten kod:

constructor TForm1.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FDConnection1.Connected := false;
  FDConnection1.Params.Text := 'Database=xxx' + sLineBreak+
      'User_Name=xxx'              + sLineBreak+
      'Password=xxx'                + sLineBreak+
      'Server=xxx'                 + sLineBreak+
      'DriverID=PG';
  FDConnection1.Connected := True;
end;

i pomimo ustawionego połączenia na FDConnection.Connected := true na formie do bazy A to przy starcie exe mi się do niej nie łączy tylko do bazy podnej w parametrach

2

@Andrzej Gicala użyj zdarzenia BeforeConnect dla komponentu i tam sobie podmień connection stringa na wczytany z configu.

2
Andrzej Gicala napisał(a):

Ja chcę żeby obiekt AdoConnection podczas tworzenia miał connected=false bez względu jaki stan ustawię przed kompilacją w object inspector.

tak się nie da - jak ustawisz na true to jest true - ja tu naprawdę nie widzę niczego dziwnego...

3
abrakadaber napisał(a):
Andrzej Gicala napisał(a):

Ja chcę żeby obiekt AdoConnection podczas tworzenia miał connected=false bez względu jaki stan ustawię przed kompilacją w object inspector.

tak się nie da - jak ustawisz na true to jest true - ja tu naprawdę nie widzę niczego dziwnego...

Oczywiście, że się da:
https://www.delphipraxis.net/1369581-post30.html

Nie jest pewien od której wersji Delphi dostępne jest zdarzenie TComponent.OnGetDeltaStreams

1 użytkowników online, w tym zalogowanych: 0, gości: 1