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 3 von 4     123 4      
Benutzerbild von Andidreas
Andidreas

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

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 17:32
@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
Und die Prozedur kann dann in einer anderen Unit liegen?
Sorry wenn ich so doof nachfrage, aber ich steh grad ein klein wenig aufm Schlauch...
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 Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.028 Beiträge
 
Delphi 12 Athens
 
#22

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 17:36
Kurze Zwischenfrage: ist D2005 richtig oder arbeitest du schon mit was neuerem?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 17:41
Klappt das hiermit (komplett ungetestet, da im Editor getippt)?
Delphi-Quellcode:
uses
  TypInfo;
  
function HasProperty(AClass: TObject; const APropertyName: String): Boolean;
var
  MyPropInfo: PPropInfo;
begin
  MyPropInfo := GetPropInfo(AClass.ClassInfo, APropertyName);
  Result := Assigned(MyPropInfo);
end;

function CompSetPropValue(AClass: TObject; const PropName, Caption: string): Boolean;
var
  MyPropInfo: PPropInfo;
begin
  MyPropInfo := GetPropInfo(AClass.ClassInfo, PropName);
  Result := Assigned(MyPropInfo);
  if Result then
    SetPropValue(AClass, PropName, Caption);
end;

procedure prLoadModuleLanguage(AParent: TWinControl);
const PROPNAMES: array[0..1] of string = ('Caption', 'Text');
var
  i, j: integer;
  NewText: string;
  AControl: TControl;
begin
  Assert(Assigned(AParent));
  for i := 0 to AParent.ControlCount - 1 do
    begin
      AControl := AParent.Controls[i];
      NewText := fnGetComponentCountryText('Component', AParent.ClassName,
        AControl.ClassName, AControl.Name);
      for j := Low(PROPNAMES) to High(PROPNAMES) do
        if HasProperty(AControl, PROPNAMES[j]) then
          begin
            CompSetPropValue(AControl, PROPNAMES[j], NewText);
            break;
          end;
      if AControl is TWinControl then
        prLoadModuleLanguage(TWinControl(AControl));
    end;
end;
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
 
#24

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 17:50
@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
Und die Prozedur kann dann in einer anderen Unit liegen?
Sorry wenn ich so doof nachfrage, aber ich steh grad ein klein wenig aufm Schlauch...
Ja, das geht problemlos, allerdings musst du wohl noch die eine oder andere Unit in die uses der Unit mit aufnehmen (z.B. Classes, Controls).

Das ist aber auf jeden fall eine Reduzierung, weil bei deinem Ansatz musst du ja deine kompletten Komponenten-Units einbinden
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
 
#25

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 18:08
Kurze Zwischenfrage: ist D2005 richtig oder arbeitest du schon mit was neuerem?
Ne stimmt nicht mehr, haben mittlerweile RAD Studio XE und XE2 liegt uninstalliert in der Schublade

@deddyH und Sir Rufo
Werd Eure Ansätze morgen mal ausprobieren... Aufm iPad hab ich leider kein RAD Studio
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 himitsu
himitsu

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

AW: Form Namen Variable verwenden

  Alt 21. Aug 2012, 18:39
XE2 hat selber in vielen Komponenten eine Übersetzungsfunktion integriert, wo sich die Komponenten selber übersetzen, also keiner sie suchen muß und wo du dich mit deiner Funktion einklinken könntest.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

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

AW: Form Namen Variable verwenden

  Alt 22. Aug 2012, 07:59
Ich habs jetzt mal so gemacht:

Delphi-Quellcode:
procedure prLoadModuleLanguage(frmModule : TForm);

var
i : Integer;


begin

  For i := 0 To frmModule.ComponentCount -1 Do
  Begin

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

    //TAdvToolBar
    If (frmModule.Components[i] is TAdvToolBar) Then
    Begin
      (frmModule.Components[i] as TAdvToolBar).Caption := fnGetComponentCountryText('Component', frmModule.Name, 'TAdvToolBar', (frmModule.Components[i] as TAdvToolBar).Name);
    End;

    //TAdvGlowButton
    If (frmModule.Components[i] is TAdvGlowButton) Then
    Begin
      (frmModule.Components[i] as TAdvGlowButton).Caption := fnGetComponentCountryText('Component', frmModule.Name, 'TAdvGlowButton', (frmModule.Components[i] as TAdvGlowButton).Name);
    End;

  End;

end;

Ist der Lösungsansatz schlechter als der von deddyH oder Sir Rufo?
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
 
#28

AW: Form Namen Variable verwenden

  Alt 22. Aug 2012, 08:04
Zumindest ist er unflexibler
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
 
#29

AW: Form Namen Variable verwenden

  Alt 22. Aug 2012, 08:09
Zumindest ist er unflexibler
Weil ich immer Abfragen muss was es für eine Komponente ist?
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
 
#30

AW: Form Namen Variable verwenden

  Alt 22. Aug 2012, 08:11
Genau. Sobald ein neuer Komponententyp dazukommt, musst Du den Code wieder erweitern. Und ob Du wirklich auf Components statt Controls zugreifen willst, musst Du anhand der vorherigen Diskussion selbst entscheiden.
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
Antwort Antwort
Seite 3 von 4     123 4      


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 22:01 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