![]() |
AW: Form Namen Variable verwenden
Zitat:
Sorry wenn ich so doof nachfrage, aber ich steh grad ein klein wenig aufm Schlauch... :oops: |
AW: Form Namen Variable verwenden
Kurze Zwischenfrage: ist D2005 richtig oder arbeitest du schon mit was neuerem?
|
AW: Form Namen Variable verwenden
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; |
AW: Form Namen Variable verwenden
Zitat:
Das ist aber auf jeden fall eine Reduzierung, weil bei deinem Ansatz musst du ja deine kompletten Komponenten-Units einbinden ;) |
AW: Form Namen Variable verwenden
Zitat:
@deddyH und Sir Rufo Werd Eure Ansätze morgen mal ausprobieren... Aufm iPad hab ich leider kein RAD Studio :lol: |
AW: Form Namen Variable verwenden
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.
|
AW: Form Namen Variable verwenden
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? |
AW: Form Namen Variable verwenden
Zumindest ist er unflexibler :mrgreen:
|
AW: Form Namen Variable verwenden
Zitat:
|
AW: Form Namen Variable verwenden
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 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-2025 by Thomas Breitkreuz