Delphi-PRAXiS

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 Find Window und FindForm (https://www.delphipraxis.net/124095-find-window-und-findform.html)

Cylence 14. Nov 2008 09:13


Find Window und FindForm
 
Hi,

ich hab einige Menuitems die nur eine Form anzeigen on Click also nur FormXYZ.Show;
Jetzt hab ich mir gedacht wär doch einfacher ich mach nur eine Prozedur für alle... und geb den Namen der Form als Hint beim Menuitem ein, damit würde ich mal wieder einen haufen sparen... aber es mag leider nich so ganz wie ich will...

Delphi-Quellcode:

procedure TForm1.Gargle2Click(Sender: TObject);
var
  ClassName : PAnsiChar;
  WindowName : PAnsiChar;
begin
  WindowName := PChar((Sender as TMenuitem).Hint);
  ClassName := PChar('T'+ (Sender as TMenuitem).Hint);  
  FindForm(FindWindow(ClassName,WindowName)).Show;
  //frmDVDDMOGargle.Show;
end;
Ich krieg nur eine Zugriffsverletzung... aber Syntax passt ebenfalls hab ich Klassennamen und WindowName korrekt im Debugger also TfrmDVDDMOGargle und frmDVDDMOGargle aber findWindow funzt nicht... FindWindow gibt immer 0 zurück :-(

kennt sich einer von euch damit aus?

Cylence 14. Nov 2008 09:37

Re: Find Window und FindForm
 
Hi,

habs rausgefunden...

das FindWindow meint zwar das es einen WindowNamen will aber...das ist nicht richtig... mit der Caption gehts:

FindForm(FindWindow(nil,Pchar((Sender as TMenuitem).Hint))).Show;

Gruß

tom

Luckie 14. Nov 2008 09:47

Re: Find Window und FindForm
 
Zitat:

Zitat von Cylence
das FindWindow meint zwar das es einen WindowNamen will aber...das ist nicht richtig... mit der Caption gehts:

In welcher Dokumentation steht das? Im Windows SDK steht eindeutig, dass der erste Paramter die Fensterklasse und der zweite Parameter der Fenstertitel ist.
Aber warum so kompliziert? Das TApplication Objekt, müsste doch alle Forms kennen.

Cylence 14. Nov 2008 10:26

Re: Find Window und FindForm
 
Hi,

keine ahnung in welcher Dokumentation das steht aber mit Fensternamen hat FindWindow niemals was gefunden jetzt geb ich da die Caption ein und siehe da das ganze funktioniert...

achja und ich mach das so kompliziert weil ich das sehr viel schöner find als 30 einzelne Prozeduren mit nur irgendneForm.Show
is ne sehr schöne art so find ich... spart mal kurz wieder 6 Kb von meiner exe ein jetzt

Luckie 14. Nov 2008 10:35

Re: Find Window und FindForm
 
Das meine ich nicht. Du kannst der Methode ja den Formularnamen übergeben, welchen du als zusätzliche Information in den Menüitems hinterlegst.

nat 14. Nov 2008 11:49

Re: Find Window und FindForm
 
also wenn du nur beim klicken n form anzeigen willst, dann könntest du in dem tag feld das entsprechende form speichern
Delphi-Quellcode:
TMenuItem(xxx).Tag := Integer(Form2);
und in der onclick dann entsprechend so anzeigen
Delphi-Quellcode:
  with Sender as TMenuItem do
    TForm(Tag).Show;

Cylence 17. Nov 2008 14:45

Re: Find Window und FindForm
 
Hi,

das hört sich auch nich schlecht an, aber da müsst ich ja auch ncoh an die Tags die Handles übergeben on popup oder so und damit würde es dann die ersparnis von vorher wieder weg machen, aber trotzdem schöne lösung


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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