AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zugriff auf Frame-Objekte

Ein Thema von Dennis07 · begonnen am 16. Mai 2012 · letzter Beitrag vom 21. Mai 2012
Antwort Antwort
Seite 3 von 3     123
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
481 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
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#22

AW: Zugriff auf Frame-Objekte

  Alt 20. Mai 2012, 17:30
Das klappt natürlich nicht weil du deine Variablen alle als TFrame deklariert hast.


Ändere einfach deine Deklaration von TFrame auf TWelcomeFrame (oder was auch immer)
Lars
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#23

AW: Zugriff auf Frame-Objekte

  Alt 20. Mai 2012, 17:46
Ich frage mich ernsthaft, warum du das Rad neu erfinden musst...

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Zugriff auf Frame-Objekte

  Alt 20. Mai 2012, 18:15
Schön, daß das nun endlich mal geklärt ist. (hat auch lange genug gedauert)
Denn genau deswegen hatte ich danach gefragt.

Zitat:
Delphi-Quellcode:
    Frame_Welcome: TFrame;
    Frame_License: TFrame;
    Frame_Progress: TFrame;
    Frame_Finish: TFrame;
Woher soll eine TFrame-Variable auch die Komponenten/Felder kennen, welche z.B. erst in TfrLicense deklariert wurden?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Dennis07

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

AW: Zugriff auf Frame-Objekte

  Alt 20. Mai 2012, 18:42
Müsste es nicht reichen, den Befehl
Frame_123 := TMyFrame.Create zu geben??
Dennis
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#26

AW: Zugriff auf Frame-Objekte

  Alt 20. Mai 2012, 19:02
Müsste es nicht reichen, den Befehl
Frame_123 := TMyFrame.Create zu geben??
Nein, TFrame weiß nichts von deiner Funktion ChangeLanguage in TfrLicence (da Du ja von TFrame ableitest). Ändere einfach TFrame auf TfrLicence ab und kompiliere.
Lars
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: Zugriff auf Frame-Objekte

  Alt 20. Mai 2012, 20:02
Nur noch ergänzend:

Frame_123 ist ein Zeiger auf eine Speicherstelle. Der Compiler interpretiert diese als TFrame da Du das so angegeben hast.
Willst Du das Objekt in anderer Form nutzen, musst Du casten:

Delphi-Quellcode:
Frame_123: TFrame;
...
Frame_123 := TMyFrame.Create;
...
if Frame_123 is TMyFrame then
  (Frame_123 as TMyFrame).DoSpezial;
Das ist natürlich etwas umständlich und sollte vermieden werden.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Dennis07

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

AW: Zugriff auf Frame-Objekte

  Alt 21. Mai 2012, 08:11
Hi Leute,
Danke für eure Hilfe, jetzt funktioniert alles.
mfg
Dennis
  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 · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 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