AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

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.001 Beiträge
 
Delphi XE Professional
 
#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...
Andreas Schulze
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

Registriert seit: 20. Jan 2006
Ort: Lübbecke
2.044 Beiträge
 
Delphi XE4 Architect
 
#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
22.785 Beiträge
 
Delphi XE Professional
 
#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
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo
Online

Registriert seit: 5. Jan 2005
Ort: Stadthagen
4.293 Beiträge
 
Delphi 2010 Professional
 
#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
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.001 Beiträge
 
Delphi XE Professional
 
#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
Andreas Schulze
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
24.844 Beiträge
 
Delphi XE3 Professional
 
#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.
Delphi-Tage 2012
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.001 Beiträge
 
Delphi XE Professional
 
#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?
Andreas Schulze
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
22.785 Beiträge
 
Delphi XE Professional
 
#28

AW: Form Namen Variable verwenden

  Alt 22. Aug 2012, 08:04
Zumindest ist er unflexibler
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.001 Beiträge
 
Delphi XE Professional
 
#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?
Andreas Schulze
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
22.785 Beiträge
 
Delphi XE Professional
 
#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
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2013 by Daniel R. Wolf