Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Dynamischer Verweis auf Komponente (https://www.delphipraxis.net/197899-dynamischer-verweis-auf-komponente.html)

Moombas 17. Sep 2018 11:18

AW: Dynamischer Verweis auf Komponente
 
@Schokohase: Nicht wirklich. Sorry aber ich glaube du hast das nicht so ganz verstanden.
Aufbau:
Edits:
Pagecontrol1 (Menu) -> PageX (Einstellungen) -> Pagecontrol2 (EinstellungenPC) -> PageY (ToolsE) -> EditE1-15 (Programmpfade) & EditP1-15 (Parameter)
Tool1E.text...Tool15E.text
Tool1P.text...Tool15P.text

Buttons:
Pagecontrol1 (Menu) -> PageZ (Programme) - >GroupBox (Toolbar) -> Button1-15 (Aufruf)
Tool1B...Tool15B

Und an dem Aufbau wird sich nichts ändern.

@DeddyH: Doch TTools ist die Form (Formname: Tools). Probiert habe ich es auch schon mit:
showmessage(TEdit(FindComponent('Application.TTool s.Tool' + copy(Name, 5, 1) + 'E')).Text);
showmessage(TEdit(FindComponent('Application.Tools .Tool' + copy(Name, 5, 1) + 'E')).Text);
showmessage(TEdit(FindComponent('TTools.Tool' + copy(Name, 5, 1) + 'E')).Text);
showmessage(TEdit(FindComponent('Tools.Tool' + copy(Name, 5, 1) + 'E')).Text);

leider kein Erfolg, er scheint das EditFeld absolut nicht zu finden. Da muss irgendwo ein Denkfehler sein.

Schokohase 17. Sep 2018 11:45

AW: Dynamischer Verweis auf Komponente
 
Nun sagen wir mal so, du hast es gar nicht erklärt. Und Nichts kann man eben nicht nicht verstehen.

Aber aus deinen Erklärungen sehe ich das es auf der PageY (ToolsE) 15 Paare von Edit-Feldern gibt (eines für den Programmpfad, das andere für die Parameter).

Diese beiden könnte man in einem Frame zusammenfassen und dem Frame eine Execute-Methode verpassen (so wie von mir gezeigt).

Aber ist schon recht ... bei dem Aufbau würde ich da auch ganz anders drangehen (kein Zugriff vom Button auf die ToolXE/ToolXP-Cotrols)

Uwe Raabe 17. Sep 2018 11:50

AW: Dynamischer Verweis auf Komponente
 
Zitat:

Zitat von Moombas (Beitrag 1413352)
er scheint das EditFeld absolut nicht zu finden. Da muss irgendwo ein Denkfehler sein.

Wenn die PAS-Datei zu geheim ist, genügt es auch nur die DFM-Datei hier zu posten. Daran könnte man den Aufbau des Forms schon erkennen.

Moombas 17. Sep 2018 11:59

AW: Dynamischer Verweis auf Komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das sollte kein Problem darstellen^^ s.u.

Moombas 17. Sep 2018 12:20

AW: Dynamischer Verweis auf Komponente
 
Hab aber in einem anderen Beitrag (über Google über Umwege) eine Lösung gefunden:

TEdit(Tools.FindComponent('Tool' + copy(Name, 5, 1) + 'E')).Text

-.-

Schokohase 17. Sep 2018 12:28

AW: Dynamischer Verweis auf Komponente
 
Zitat:

Zitat von Moombas (Beitrag 1413364)
Hab aber in einem anderen Beitrag (über Google über Umwege) eine Lösung gefunden:

Delphi-Quellcode:
TEdit(Tools.FindComponent('Tool' + copy(Name, 5, 1) + 'E')).Text
-.-

Die funktioniert ja super für die Button von 1-9. Aber was ist mit 10,11,12,13,14,15?
Es gibt keine Exception, aber einen falschen Zugriff auf Tool1E!

Uwe Raabe 17. Sep 2018 12:50

AW: Dynamischer Verweis auf Komponente
 
Zitat:

Zitat von Moombas (Beitrag 1413364)
Hab aber in einem anderen Beitrag (über Google über Umwege) eine Lösung gefunden:

TEdit(Tools.FindComponent('Tool' + copy(Name, 5, 1) + 'E')).Text

Wenn das Voranstellen des Formnamens (was in der Regel eher nicht gut ist) das Problem löst, dann kann das eigentlich nur bedeuten, daß der Button-Click Event nicht innerhalb der TTools-Klasse liegt. Das wäre allerdings eine nicht ganz unwichtige Information.

Moombas 17. Sep 2018 14:47

AW: Dynamischer Verweis auf Komponente
 
@Schokohase: Doch:
Delphi-Quellcode:
    try
      StrToInt(copy(Name, 6, 1));
//1-Stellig (0-9)
    except
//2-Stellig (10-99)
    end;

DeddyH 17. Sep 2018 14:52

AW: Dynamischer Verweis auf Komponente
 
Wieso sollte der Code eine Exception werfen, wenn im 6. Zeichen eine Ziffer steht?

himitsu 17. Sep 2018 14:55

AW: Dynamischer Verweis auf Komponente
 
Zitat:

Delphi-Quellcode:
showmessage(TEdit(FindComponent('Application.TTools.Tool' + copy(Name, 5, 1) + 'E')).Text);

Ich glaube du hast das FindComponent falsch verstanden.

Es ist keine globale Funktion, sondern die Methode von TComponent-Nachfahren.
In deinem Fall also
Delphi-Quellcode:
Self.FindComponent
, welches somit aus deiner TForm kommt (über die Klasse, in welcher die aufrufende Methode liegt)

Und das Ding sucht nur nach Sub-Komponenten in der angegebenen Komponente, also nach allem, von dem deine Form der Owner ist.
Komponenten-Pfade werden dabei nie aufgelöst ... nur das was "direkt" ein Child ist.


Das Selbe gilt für FindControl, was entsprechend die Parent-Beziehungen behandelt.


In der globalen Variabe Screen findet man alle Forms, welche man durchgehen und da drauf suchen könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr.
Seite 2 von 3     12 3      

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