Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi AdvStringGrid lässt MainForm verschwinden und liefert Fokus nicht ans Programm zurück (https://www.delphipraxis.net/182278-advstringgrid-laesst-mainform-verschwinden-und-liefert-fokus-nicht-ans-programm-zurueck.html)

himitsu 15. Okt 2014 09:46

AW: AdvStringGrid lässt MainForm verschwinden und liefert Fokus nicht ans Programm zu
 
PopupParent = die Form, über welche diejenige Form immer drüber liegt.
PopupMode gehört auch noch dazu.

Vorallem bei Programmen mit mehreren Fenstern, welche nicht ShowModal sind ganz praktisch, um zu verhindern, daß Fenster hinter anderen verschwinden. (ohne explizite Angabe benutzt Delphi standardmäßig die MainForm)

kretabiker 15. Okt 2014 10:08

AW: AdvStringGrid lässt MainForm verschwinden und liefert Fokus nicht ans Programm zu
 
@himitsu: Danke für die Erläuterung

devidespe 15. Okt 2014 11:52

AW: AdvStringGrid lässt MainForm verschwinden und liefert Fokus nicht ans Programm zu
 
Hallo zusammen,

danke für eure Hinweise. Das mit dem PopupParent habe ich nachvollziehen können, ich hatte es bisher verwendet, damit Fenster nicht hintereinander verschwinden, und ich immer ein modales Fenster habe. Das funzt aber im Zusammenhang mit AdvStringGrid nicht.

Da ich auf den GlassFrame nicht verzichten kann/möchte, habe ich vorerst das PopupParent weggelassen, der TMS Support weiß bescheid und besitzt eine nachvollziehbare Applikation. Ich nehme an, hier wird in Kürze ein Fix erscheinen.

Der problematische Zusammenhang mit GlassFrame ist auch deswegen nachvollziehbar, weil es mit PopupParent unter Windows XP funktioniert, da hier der GlassFrame standardseitig deaktiviert ist.

himitsu 15. Okt 2014 12:08

AW: AdvStringGrid lässt MainForm verschwinden und liefert Fokus nicht ans Programm zu
 
Was kommt denn hier raus?
Delphi-Quellcode:
var
  LogForms: string;
procedure AddFormLog(S: string);
  begin
    LogForms := LogForms + S + ':' + sLineBreak;
    if Assigned(Screen.ActiveCustomForm) then
      with Screen.ActiveCustomForm do
        LogForms := LogForms + 'Active = ' + ClassName + '.' + Name + ' > ' + BoolToStr(Visible, True) + sLineBreak
    else
      LogForms := LogForms + 'Active = nil' + sLineBreak;
    for i := 0 to Screen.CustomFormCount - 1 do
      with Screen.CustomForms[i] do
        LogForms := LogForms + ClassName + '.' + Name + ' > ' + BoolToStr(Visible, True) + sLineBreak;
  end;
begin
  LogForms := 'Drücke Strg+C zum Kopieren' + sLineBreak + sLineBreak;
  AddFormLog('BeforeCreate');
  FormDatenVergleich.FormDatenVergleichVar := FormDatenVergleich.TFormDatenVergleich.Create(Application);
  try
    AddFormLog('PopupParent');
    FormDatenVergleich.FormDatenVergleichVar.PopupParent := Self;
    AddFormLog('BeforeShow');
    FormDatenVergleich.FormDatenVergleichVar.ShowModal;
  finally
    AddFormLog('AfterShow');
    FormDatenVergleich.FormDatenVergleichVar.Free;
    AddFormLog('AfterFree');
  end;
  //Application.ProcessMessages;
  //AddFormLog('AfterMessages');
  ShowMessage(LogForms);
end;

devidespe 15. Okt 2014 12:34

AW: AdvStringGrid lässt MainForm verschwinden und liefert Fokus nicht ans Programm zu
 
Das hier:

Delphi-Quellcode:
[Window Title]
Project4

[Content]
BeforeCreate:
Active = TForm2.Form2_1 > True
TForm2.Form2_1 > True
TForm1.Form1 > True
TForm2.Form2 > False
TForm3.Form3 > False
TNoActiveForm. > False
TTrackerForm. > False
PopupParent:
Active = TForm2.Form2_1 > True
TForm2.Form2_1 > True
TForm1.Form1 > True
TForm2.Form2 > False
TForm3.Form3 > False
TNoActiveForm. > False
TTrackerForm. > False
TFormDatenVergleich.FormDatenVergleich > False
TNoActiveForm. > False
BeforeShow:
Active = TForm2.Form2_1 > True
TForm2.Form2_1 > True
TForm1.Form1 > True
TForm2.Form2 > False
TForm3.Form3 > False
TNoActiveForm. > False
TTrackerForm. > False
TFormDatenVergleich.FormDatenVergleich > False
TNoActiveForm. > False
AfterShow:
Active = TForm2.Form2_1 > True
TForm2.Form2_1 > True
TFormDatenVergleich.FormDatenVergleich > False
TForm1.Form1 > True
TForm2.Form2 > False
TForm3.Form3 > False
TNoActiveForm. > False
TTrackerForm. > False
TNoActiveForm. > False
AfterFree:
Active = TForm2.Form2_1 > True
TForm2.Form2_1 > True
TForm1.Form1 > True
TForm2.Form2 > False
TForm3.Form3 > False
TNoActiveForm. > False
TTrackerForm. > False


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr.
Seite 2 von 2     12   

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