AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form Namen Variable verwenden

Ein Thema von Andidreas · begonnen am 21. Aug 2012 · letzter Beitrag vom 24. Aug 2012
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 16:26
Damit ich nun im OnCreate Ereignis jeder Form die csv Datei auslesen muss wollte ich mir eine Prozedur basteln an die ich den Form Namen übergebe und über die Prozedur sollen aus der csv Datei dann die richtigen Captions ausgelesen werden.
Aber dann hast du doch auch die Instanz der Form, warum übergibst du die dann nicht direkt?

Delphi-Quellcode:
procedure TSomeForm.SomeFormCreate(Sender : TObject);
begin
  prLoadModuleLanguage( Self ); // <- mit Self wird die aktuelle Instanz übergeben =:o)
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#12

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 16:28
Damit ich nun im OnCreate Ereignis jeder Form die csv Datei auslesen muss wollte ich mir eine Prozedur basteln an die ich den Form Namen übergebe und über die Prozedur sollen aus der csv Datei dann die richtigen Captions ausgelesen werden.
Aber dann hast du doch auch die Instanz der Form, warum übergibst du die dann nicht direkt?

Delphi-Quellcode:
procedure TSomeForm.SomeFormCreate(Sender : TObject);
begin
  prLoadModuleLanguage( Self ); // <- mit Self wird die aktuelle Instanz übergeben =:o)
end;
Bis jetzt ist ja meine "prLoadModuleLanguage" Prozedur mit einer String Variablen deklariert...
Wie müsste das dann aussehen wenn ich das mit Self mache?
Sorry ich bin auf dem Gebiet nicht wirklich bewandert
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 16:30
Dann nimm doch self.Name oder self.Classname, je nachdem.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 16:34
Delphi-Quellcode:
procedure prLoadModuleLanguage(sModule : String);

var
i : Integer;


begin

  For i := 0 To Application.FindComponent(sModule).ComponentCount -1 Do
  Begin

    //TAdvPage
    If (Application.FindComponent(sModule).Components[i] is TAdvPage) Then
    Begin
      (Application.FindComponent(sModule).Components[i] as TAdvPage).Caption := fnGetComponentCountryText('Component', sModule, 'TAdvPage', (Application.FindComponent(sModule).Components[i] as TAdvPage).Name);
    End;

    //TAdvToolBar
    ...

    //TAdvGlowButton
    ...
  End;

end;
So macht man das ja auch nicht, sondern man schaut sich an, ob das Caption nicht aus einem Vorfahren kommt, und dann arbeitet man mit dem Vorfahren.

Caption kommt normalerweise von TControl.Caption

Also im ganzen Satz:
Delphi-Quellcode:
procedure prLoadModuleLanguage(aComponent : TComponent);
var
  idx : Integer;
  lComponent : TComponent;
  lControl : TControl;
begin
  for idx := 0 to Pred( aComponent.ComponentCount ) do
  begin

    lComponent := aComponent.Components[ idx ];

    if lComponent is TControl then
    begin

      lControl := lComponent as TControl;

      lControl.Caption := fnGetComponentCountryText('Component', aComponent.ClassName, lComponent.ClassName, lComponent.Name);

    end;

  end;
end;
Irgendwelche Spezialfälle muss man natürlich gesondert behandeln, aber auch da macht es immer Sinn, den passenden Vorgänger zu suchen, sonst tippt man sich einen Wolf.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 16:42
Könnte man dann nicht gleich über Controls iterieren? Nicht-visuelle Komponenten müssen ja nicht beschriftet werden. Außerdem ist TControl.Caption IIRC protected und wird in abgeleiteten Klassen dann zu Caption oder zu Text, man bräuchte also entweder eine Unterscheidung, was sehr umfangreich werden könnte, oder ein wenig RTTI.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 16:47
Könnte man dann nicht gleich über Controls iterieren? Nicht-visuelle Komponenten müssen ja nicht beschriftet werden. Außerdem ist TControl.Caption IIRC protected und wird in abgeleiteten Klassen dann zu Caption oder zu Text, man bräuchte also entweder eine Unterscheidung, was sehr umfangreich werden könnte, oder ein wenig RTTI.
Controls -> Parent
Components -> Owner

Die Form ist idR der Owner, der Parent kann auch ein Panel sein und dann müsste man bei den Controls rekursiv durchgehen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 16:50
Trotzdem würde ich das vorziehen, denn man kann eine Komponente ja auch dynamisch zur Laufzeit erzeugen, ohne dass man einen Owner angibt. Man kann sie natürlich auch ohne Parent erzeugen, aber dann ist sie eh nicht zu sehen, muss also auch gar nicht beschriftet werden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#18

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 17:22
@Sir Rufo
Gibt es keine möglichkeit, das ich im OnShow ereignis einer Form die Komponenten durchsuche und die Captions etc. setze und das über eine Prozedur die ich im OnShow Ereignis aufrufe so wie von mir angedacht?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 17:29
@Sir Rufo
Gibt es keine möglichkeit, das ich im OnShow ereignis einer Form die Komponenten durchsuche und die Captions etc. setze und das über eine Prozedur die ich im OnShow Ereignis aufrufe so wie von mir angedacht?
Das passiert doch so wie ich das geschrieben habe - gut der Aufruf müsste dann im OnShow erfolgen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.175 Beiträge
 
Delphi 12 Athens
 
#20

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 17:31
Das Einzige, was halbwegs sicher ist, wenn du rekursiv alle Controls (Parent-Child-Beziehungen) durchläufst.

Die Components, bzw der Owner hat ja nichts mit der Sichtbarkeit zu tun, sondern nur mit der internen (Speicher)Verwaltung.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 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