![]() |
Eine Komponente auf einen "X" Form Ansprechen?
Hallo.
Habe 20 Forms auf jeden diese Form befindet sich eine TMYTABLE komponente. meine Forms haben folgende namen f_xx (x steht für name). Nun will ich auf eine X Form die Komponente TMYTABLE (Tabelle) ansprechen. Wie mache ich das? Procedure(Formname:String); begin TForm(Formname).Tabelle.open; end; So funktioniert das nicht! :( |
Re: Einen Komponente auf einen "X" Form Ansprechen
- Ändere bitte mal den Titel (Das was da steht ergibt irgendwie keinen Sinn)
- Nutze bitte die Delphi-Tags Bei dem was du vorhast könnte dir evtl. FindComponent helfen
Delphi-Quellcode:
(Application.FindComponent('Formular_73') as TXForm).TMyTable.machwas
|
Re: Einen Komponente auf einen "X" Form Ansprechen
Zitat:
Es gäb 2 Möglichkeiten: a) Eine ähnliche Variante wie die von Hador:
Delphi-Quellcode:
oder b) über ein Interface, was eine sauberere Lösung wäre.
(f_XX.FindComponent('Tabelle') as TMyTable).Open
greetz Mike |
Re: Eine Komponente auf einen "X" Form Ansprechen?
Ich versuche es anders.
Ich habe 20 Formulare. Auf jeden Formular habe ich eine gleichnamige Tabelle (komponente) nun will ich alle Tabelle Refreshen. Oder Irgendwas anderese mit diese Komponente machen. Was genau ist erstmal egal! Drei Formulare von 20! var f_ap: Tf_ap; var f_ag: Tf_ag; var f_a: Tf_a; (Application.FindComponent('Formular_73') as TXForm).TMyTable.machwas das funktioniert nicht weil ich as TXForm nicht kenne. PS: Titeltext, ist aus meine sicht richtig! |
Re: Eine Komponente auf einen "X" Form Ansprechen?
Zitat:
Delphi-Quellcode:
Sollte dann Funktionieren. Es ist allerdings nicht die sauberste Lösung, deswegen würd ich eher den Weg über ein Interface wählen.
(f_XX.FindComponent('Tabelle') as TMyTable).Open
Ich habs mal mit nem Button gemacht, es sollte nicht zu schwer sein das anzupassen:
Delphi-Quellcode:
type
IButtonInterface = interface(IInterface) function GetButton: TButton; property b: TButton read GetButton; end; TForm1 = class(TForm, IButtonInterface) Button1: TButton; procedure Button1Click(Sender: TObject); private function GetButton: TButton; public property b: TButton read GetButton; end; var Form1: TForm1; implementation procedure JustATest; begin ShowMessage(IButtonInterface(Form1).b.Caption); end; { TForm1 } function TForm1.GetButton: TButton; begin result := Button1; end; Zitat:
![]() greetz Mike |
Re: Eine Komponente auf einen "X" Form Ansprechen?
ich werde euch mein Geheimniss lüften.... :)
Das will ich nicht 20 mal eingeben!
Delphi-Quellcode:
sonder nur einmal!
IF Formularname = 'f_ag' then
begin with f_ag.Tabelle do begin Close; Sql := Sqlabfrage; open; end; end; IF Formularname = 'f_ap' then begin with f_ap.Tabelle do begin Close; Sql := Sqlabfrage; open; end; end; IF Formularname = 'f_a' then begin with f_a.Tabelle do begin Close; Sql := Sqlabfrage; open; end; end; |
Re: Einen Komponente auf einen "X" Form Ansprechen
Zitat:
Zitat:
EDIT: Von welchem Typ sind f_ag, f_ap, ... denn? |
Re: Eine Komponente auf einen "X" Form Ansprechen?
Zitat:
greetz Mike |
Re: Eine Komponente auf einen "X" Form Ansprechen?
Zitat:
Auf jeder Form ist eine Gleichenamierge Komponente (Tabelle <-Komponentename) von Gleichen Typ TMyTable Deine Lösung ist "fast richtig" (Application.FindComponent(Formularname) as Tf_ag).Tabelle.open; So würde das auch funktionieren, nun muss ich noch irgendwie as TF_ag durch eine Varialbe erseten, aber Wie? (Application.FindComponent(Formularname) as TForm(Formular.ClassType)).Tabelle.open; Ihr merkt schon, ich habe nicht so viel Ahnung in diese Situation.... |
Re: Eine Komponente auf einen "X" Form Ansprechen?
Zitat:
Zitat:
greetz Mike |
Re: Eine Komponente auf einen "X" Form Ansprechen?
Zitat:
:oops: |
Re: Eine Komponente auf einen "X" Form Ansprechen?
Zitat:
Wenn du Interfaces aber noch nicht kennst, empfehle ich dir die andere Variante:
Delphi-Quellcode:
Sie ist zwar nur halbso schön, jedoch sollte sie leichter verständlich sein. Und besser, der Code ist nicht der schönste von allen, aber dafür weiß man, was man tut ;)
(f_XX.FindComponent('Tabelle') as TMyTable).Open
greetz Mike |
Re: Eine Komponente auf einen "X" Form Ansprechen?
Zitat:
Das funktioniert! WOW doch so einfach.... VIELLEN DANK! |
Re: Eine Komponente auf einen "X" Form Ansprechen?
DIE LÖSUNG (für mich) :) DANKESCHÖN!
Delphi-Quellcode:
with Formular.FindComponent('Tabelle') as TMyTable do
begin Close; Sql := Sqlabfrage; open; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr. |
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 by Thomas Breitkreuz