Einzelnen Beitrag anzeigen

Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: Zugriff auf Frame-Objekte

  Alt 20. Mai 2012, 17:22
Man Dennis, das ist so banal. Zeig einfach den Code, dann sieht man es sofort.
Delphi-Quellcode:
Type
  TMyFrame = Clas (TFrame)
  ...
  public
    Procedure ChangeLanguage();
  ...
  end;
Das habe ich auch schon probiert, es funktioniert nicht, und das aus 3 Gründen.
  1. Wenn ich die Methode "Public" mache, muss ich alle der Objekte aktualisieren, das wäre aber nur eine Frage des Auswand, würde ich sogar in Kauf nehmen
  2. Nachdem ich die Objektnamen geändert habe (also von "Button1" auf "MyFrame.Button1") und das ganze kompiliere, kommt die Frage, ob ich uMyFrame in uMyFrame einbinden will, was ja sowieso schon mal blödsinn ist. Wenn ich auf "Ja" klicke und neu starte, kommt die fehlermeldung, dass ich eine Unit nicht in sich selber einbinden könne (was ja auch logisch ist)
  3. Naja, ein drittes Problem wäre, dass ich insgesamt 5 Frames habe, und jedes eine "ChangeLanguage"-Prozedur hat. Diese will ich von der Haupt-Unit nacheinander brav aufrufen, deshalb die dekleration innerhalb des Frames

Hier der Header meiner Haupt-Unit:
Delphi-Quellcode:
unit uUpdater;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, ExtCtrls, ThemeMgr, IniFiles,
  uWelcome, uLicense, uProgress, uFinish;

type
  TfmUpdater = class(TForm)
    pnSettings: TPanel;
    coLanguage: TComboBox;
    laLanguage: TLabel;
    pnButtons: TPanel;
    btCancel: TButton;
    btInstall: TButton;
    laCopyright: TLabel;
    ThemeManager1: TThemeManager;
    procedure Step(StepID: Integer);
    procedure ChangeLanguage;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure coLanguageChange(Sender: TObject);
  private
    { Private-Deklarationen }
    Frame_Welcome: TFrame;
    Frame_License: TFrame;
    Frame_Progress: TFrame;
    Frame_Finish: TFrame;

    LangIsGer: Boolean;
    CurrentStep: Integer;
  public
    { Public-Deklarationen }
    Next: String;
    Install: String;
    Finish: String;

    Msg_Cancel: String;
  end;
Hier der Header einer meiner Frame-Units:
Delphi-Quellcode:
unit uLicense;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls;

type
  TfrLicense = class(TFrame)
    laHeader: TLabel;
    reLicense: TRichEdit;
    rbAgree: TRadioButton;
    rbDecline: TRadioButton;
    procedure ChangeLanguage(Ger: Boolean);
    procedure rbAgreeClick(Sender: TObject);
    procedure rbDeclineClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

implementation

uses uUpdater;
Dennis
  Mit Zitat antworten Zitat