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 Ein Control per Procedure selektieren (https://www.delphipraxis.net/58264-ein-control-per-procedure-selektieren.html)

torud 5. Dez 2005 12:32

Re: Ein Control per Procedure selektieren
 
Zitat:

Zitat von marabu
ich wollte dich nicht vom Weg abbringen, sondern habe nur beschrieben wie ich vorgehe, da ich die von dir verwendeten Komponenten nicht auf meiner Maschine installiert habe.

Kein Problem. Ich habe es nicht so aufgefasst.

Zitat:

Zitat von marabu
Hast du zum Testen mal deine Debugger-Optionen so eingestellt, dass bei Delphi-Exceptions angehalten wird? Du könntest so die Stellen lokalisieren, an denen Übles geschieht. Setze dann einfach einen BreakPoint und inspiziere die beteiligten Variablen, dann solltest du recht schnell erkennen, wo dein Fehler im Code steckt.

Ähm ja habe ich eigentlich immer. Also sobald irgendwas eine Exception aufwirft, stopt alles und ich erhalte eine Fehlermeldeung, welche ich in den seltensten Fällen zu deuten weiss. :-)

Zitat:

Zitat von marabu
Vielleicht solltest du auch das Ergebnis von FindComponent() noch nach TWinControl casten, bevor du es in der Data property des TreeNode verankerst.

Also wenn ich ehrlich sein soll, weiss ich nicht, was Du damit meinst, bzw. wie man das machen müsste, um es zu "casten". Ich habe derzeit in der Treeview den Code dahingehend geändert, dass ich noch prüfe, ob denn überhaupt etwas in Data steht. Damit ist das Problem nun bei Programmstart behoben.

Delphi-Quellcode:
   if Assigned(Node) and (node.data<>nil) then
     TWinControl(Node.Data).SetFocus;

marabu 5. Dez 2005 19:05

Re: Ein Control per Procedure selektieren
 
Hallo Tom,

Delphi-Quellcode:
if Assigned(Node) and Assigned(Node.Data) then
  TWinControl(Node.Data).SetFocus;
SetFocus ist eine Methode von TWinControl. Wenn du TImage-Komponenten selektieren willst, dann steht dir diese Methode im Ereignis OnChange() der TreeView nicht zur Verfügung. In meiner Testanwendung habe ich aus diesem Grund den Trick mit den untergelegten Panels verwendet. Du hast geschrieben, dass du Code von Creatis für diesen Effekt verwenden kannst. Tue es dann auch und passe den Code im TreeView.OnChange() entsprechend an. Mit meinem auf TEdit oder andere TWinControl-Nachfahren zugeschnittenen Code kannst du auf jeden Fall nicht arbeiten, wenn du TImage verwendest.

Grüße vom marabu

torud 5. Dez 2005 19:54

Re: Ein Control per Procedure selektieren
 
Vielen Dank für Deine Hilfe.

Eine kleine Nachfrage und ein kleiner Test brachte nun Licht ins Dunkel.

Delphi-Quellcode:
 if Assigned(Node) and (node.data<>nil) then
    form2.FormDesigner1.Control:=(form2.FindComponent(node.Text) as TControl);
Manchmal gehts gar nicht einfacher, als man denkt...Der Vorteil dies nun zu können liegt unter anderem darin, dass ich die Images nun auch im Treeview umbenennen kann - hoffe ich zumindest. :-)


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

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-2025 by Thomas Breitkreuz