![]() |
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 ? |
AW: SetFocus will nicht ...
|
AW: SetFocus will nicht ...
... das funzt nicht.
Bekomme immer false zurück, egal ob ich Handle von der MainForm oder dem Panel nehme. |
AW: SetFocus will nicht ...
Zitat:
Alternativ trenne deinen Logger vom Prozeß deiner Anwendung. Ich verwende dafür eine externe DLL. |
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' ? |
AW: SetFocus will nicht ...
Zitat:
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:
Kein Kommentar daher wieder entfernt.
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)); |
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; |
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 .... |
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.
|
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 06:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz