Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Progr.-ausführung durch Button1.Click o. Form1.OnCreate

  Alt 25. Feb 2006, 16:38
Hallo swbo,

du hast die Variable Running als lokale Variable deklariert - so wird sie bei jedem Eintritt in die Prozedur neu erzeugt. Sie gehört in den Abschnitt private deiner Form und wird beim Erzeugen der Form automatisch mit False initialisiert:

Delphi-Quellcode:
type
  TTradeManager = class(TForm)
    // ...
  private
    Running: Boolean;
    // ...
  end;
Dementsprechend ändert sich deine Ereignisbehandlungsroutine ein wenig:

Delphi-Quellcode:
procedure TTradeManager.ApplicationEvents1Activate(Sender: TObject);
var
  hOE: hWnd;
begin
  if not Running then
  begin
    // Finde das Fenster
    hOE := FindWindow(nil, 'Trader Workstation');
    // Bringe es in den Vordergrund
    SetForegroundWindow(hOE);
    // drücke ENTER
    SendMessage(hoe,WM_KEYDOWN,VK_RETURN,0);
    SendMessage(hoe,WM_KEYUP,VK_RETURN,0);
    // verhindere erneute Ausführung
    Running := true;
  end;
end;
Den Code für das Ereignis OnActivate() der Application im Ereignis OnCreate() deiner Form aufzurufen ist überflüssig bis schädlich - wir wollten ja gerade weg von diesem zu frühen Zeitpunkt. Das Ereignis OnActivate() wird automatisch ausgelöst und der entsprechende Code wird dann ausgeführt - ohne dein Zutun, also:

Delphi-Quellcode:
procedure TTradeManager.FormCreate(Sender: TObject);
begin
  iabsocket1.Connected := true;
end;
Was genau du beim Ereignis OnClick() von Button1 vorhast, das entzieht sich leider meiner Kenntnis. Weißt du näheres darüber?

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat