AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SetFocus will nicht ...

Ein Thema von TERWI · begonnen am 19. Aug 2022 · letzter Beitrag vom 21. Aug 2022
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#1

SetFocus will nicht ...

  Alt 19. Aug 2022, 14:10
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 ?
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: SetFocus will nicht ...

  Alt 19. Aug 2022, 14:16
https://docs.microsoft.com/en-us/win...regroundwindow
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: SetFocus will nicht ...

  Alt 19. Aug 2022, 14:29
... das funzt nicht.
Bekomme immer false zurück, egal ob ich Handle von der MainForm oder dem Panel nehme.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#4

AW: SetFocus will nicht ...

  Alt 19. Aug 2022, 14:34
... 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.
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: SetFocus will nicht ...

  Alt 19. Aug 2022, 14:57
... 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' ?
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#6

AW: SetFocus will nicht ...

  Alt 19. Aug 2022, 15:06
... 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.

Geändert von venice2 (19. Aug 2022 um 16:38 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#7

AW: SetFocus will nicht ...

  Alt 19. Aug 2022, 15:14
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;
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: SetFocus will nicht ...

  Alt 19. Aug 2022, 15:31
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 ....

Geändert von TERWI (19. Aug 2022 um 15:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#9

AW: SetFocus will nicht ...

  Alt 19. Aug 2022, 15:35
Kannst du das vielleicht auf ein Minimalbeispiel runterbrechen? Ich kann das hier mit einer schnell zusammengeklickten VCL-Applikation nämlich nicht nachvollziehen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: SetFocus will nicht ...

  Alt 19. Aug 2022, 15:38
@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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.
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