Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   SetFocus will nicht ... (https://www.delphipraxis.net/211235-setfocus-will-nicht.html)

TERWI 19. Aug 2022 13:10

SetFocus will nicht ...
 
wenn mein Proggie startet, wird (zum Testen) noch ein weitere Form mit einem Logger aufgemacht.
Der Focus landet dann immer im Memo des Loggers - soll aber im Hauptfenster (auf einem Panel) bleiben.
Ich hab schon alles mögliche mit SetFous zur Form und zum Panel an allen möglichen Positionen im Text probiert.
Will einfach nicht.
Problem dabei ist:
Ich möchte/muss bei einem Tastendruck (Mausbewegung ist OK) in der MainForm reagieren und handeln.
Tippe ich z.B. nach dem Start 'ABC' landet das wie gesagt im Memo des Loggers.
Ich muss immer zwingend in die Form, bzw. auf das Panel klicken, dann ist 'alles schön'
Wo sehe ich den Wald vor lauter Bäumen nicht mehr ?

venice2 19. Aug 2022 13:16

AW: SetFocus will nicht ...
 
https://docs.microsoft.com/en-us/win...regroundwindow

TERWI 19. Aug 2022 13:29

AW: SetFocus will nicht ...
 
... das funzt nicht.
Bekomme immer false zurück, egal ob ich Handle von der MainForm oder dem Panel nehme.

venice2 19. Aug 2022 13:34

AW: SetFocus will nicht ...
 
Zitat:

Zitat von TERWI (Beitrag 1510311)
... das funzt nicht.
Bekomme immer false zurück, egal ob ich Handle von der MainForm oder dem Panel nehme.

Dann lese welche Bedingungen erfüllt sein müssen.. Siehe Remarks!

Alternativ trenne deinen Logger vom Prozeß deiner Anwendung.
Ich verwende dafür eine externe DLL.

TERWI 19. Aug 2022 13:57

AW: SetFocus will nicht ...
 
... wird dann wohl am Logger liegen ?!
Muss ich da unbedingt eine DLL von machen, eigenständige EXE/mit Send-/Postmessage oder geht das auch irgendwie 'einfach & schnell' ?

venice2 19. Aug 2022 14:06

AW: SetFocus will nicht ...
 
Zitat:

Zitat von TERWI (Beitrag 1510317)
... wird dann wohl am Logger liegen ?!
Muss ich da unbedingt eine DLL von machen, eigenständige EXE/mit Send-/Postmessage oder geht das auch irgendwie 'einfach & schnell' ?

Unbedingt nicht aber du darfst gerne meine DLL verwenden.
Projekt ist nicht kompiliert!

Bsp:

laden wo auch immer.
Delphi-Quellcode:
      if not Trace_Loaded then
      begin
        Trace_Loaded := Load_TRACEDLL(ExtractFilePath(paramstr(0)) + Tracerdllfile);
        if Trace_Loaded then
        begin
          Trace('');
          repeat
            TraceHandle := FindWindow('TRACER', 'TRACER');
            WinprocessMessages;
          until TraceHandle <> 0;
        end;
      end;
Delphi-Quellcode:
procedure LOG(S1, S2: string);
var
  s: string;
begin
  if Trace_Loaded then
  begin
    if GetTraceWinHandle then
      s := '[' + FormatDateTime('hh:nn:ss:zzz', Now) + ']';
      Trace(PWideChar(s + ' MAIN: ' + S1 + S2));
  end;
end;
Delphi-Quellcode:
      Log('Load Skin: ', DefSkin);
      Log('WindowPos: ', 'Left:' + IntToStr(gP.MainLeft) + ' Top:' + IntToStr(gP.MainTop));
      Log('WindowPos: ', 'Width:' + IntToStr(gP.MainWidth) +
        ' Height:' + IntToStr(gP.MainHeight));
      Log('CreateWindow: ', 'Handle:' + IntToStr(gP.MainHandle));
Kein Kommentar daher wieder entfernt.

Delphi.Narium 19. Aug 2022 14:14

AW: SetFocus will nicht ...
 
Welches Formular ist denn beim SetFocus im Vordergrund? Der Logger?

Wenn man ein Fenster per Show anzeigt, ist das im Vordergrund und dort hat dann die "erste" Komponente den Focus (TabStop = true und TabOrder = 0).

Soll das aufrufende Fenster aber den Focus behalten, also im Vordergrund bleiben, muss man es nach dem Aufruf des zweiten Fensters, wieder in den Vordergrund bringen.

Geht eventuell sowas?
Delphi-Quellcode:
procedure TForm1.FormCreate(sender : TObject);
begin
  ...
  FormLogger.Show;
  Self.BringToFront;
  ControlFuerDieEingabeABC.SetFocus;
  ...
end;

TERWI 19. Aug 2022 14:31

AW: SetFocus will nicht ...
 
Das wäre ja mal ne Idee.
Was muss ich den aus dem Proggie dem Logger (ich starte den über eine procedure) an eh schon zu übergebene Params auf der MainForm den noch geben ?
Hab das bisher noch nie gemacht und im Moment eher keinen Plan. (ControlFuerDieEingabeABC)

ADD:
OOPS - da kam zwischendurch noch was.
Das muss ich erst mal verarbeiten ....

Uwe Raabe 19. Aug 2022 14:35

AW: SetFocus will nicht ...
 
Kannst du das vielleicht auf ein Minimalbeispiel runterbrechen? Ich kann das hier mit einer schnell zusammengeklickten VCL-Applikation nämlich nicht nachvollziehen.

TERWI 19. Aug 2022 14:38

AW: SetFocus will nicht ...
 
@Delphi.Narium
Das hatte ich hier schon rauf und runter probiert.
Die MainForm und der OnKey... Event funzt erst, wenn ich in die Form klicke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz