![]() |
Re: von einer Form auf Frame zugreifen
[Fehler] Unit5.pas(51): Undefinierter Bezeichner: 'dateien_laden'
[Fataler Fehler] Project2.dpr(9): Verwendete Unit 'Unit5.pas' kann nicht compiliert werden [Pascal Fehler] Unit5.pas(1): Die Programmierhilfe kann nicht aufgerufen werden, da der Quelltext Fehler enthält |
Re: von einer Form auf Frame zugreifen
stimmt. Also du könntest die procedure zu einer class-procedure machen und dann
Tframeumbenennen.dateien_laden(DeinVerzeichnis) aufrufen, oder du lässt es wie jetzt musst eine Instanz von Tframeumbennen erzeugen und dann DeineInstanz.dateien_laden(DeinVerzeichnis) aufrufen. wo ist bei dir eigentlich "frameumbenennen" deklariert? |
Re: von einer Form auf Frame zugreifen
könntest du bitte mir ein beispiel schreiben wie ich das anstellen soll. mit classen bin ich nicht so gut.
|
Re: von einer Form auf Frame zugreifen
Hallo zusammen,
ist zwar schon eine Weile her, aber ich hatte / habe ein ähnliches Problem. Und zwar möchte ich verschiedene Frames dynamisch zur Laufzeit auf dem Formular einbinden, welches ich mit
Delphi-Quellcode:
mache. Dies funktioniert auch, allerdings möchte ich dann z.B. zur Laufzeit die Caption-Eigenschaft diverser Labels ändern. Leider weiß ich nun nicht, wie ich auf die Eigenschaften der Controlls in diesem dynamisch eingebundenen Frame zugreifen kann. Habe schon viel versucht, aber schon beim Entwurf scheitere ich jedesmal.
if Assigned(FrameInhalt) then FrameInhalt.Destroy;
FrameInhalt := TFrameFirma.Create(self); FrameInhalt.Parent := FormMain; FrameInhalt.Align := alClient; FrameInhalt.Show; Hat jemand Ideen? Beste Grüße Manfred |
Re: von einer Form auf Frame zugreifen
Wenn du z.B. ein dynamisches Array machst, und dir dadrin alle Frames speicherst:
Delphi-Quellcode:
Und dann schreibst du einfach
Frames: array of TMyFrame;
Delphi-Quellcode:
Verstanden?
setlength(Frames, DieLänge);
Frames[xy] := TMyFrame.Create(Self); Frames[xy].Parent := Form1; Frames[xy].Align := alTop {usw} |
Re: von einer Form auf Frame zugreifen
Versuchs mal so :
Delphi-Quellcode:
Und dann in unit1 :
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFrame2 = class(TFrame) Label_Ueberschrift: TLabel; private procedure SetUeberschrift(const Value: string); function GetUeberschrift: string; { Private-Deklarationen } public property Ueberschrift : string read GetUeberschrift write SetUeberschrift; { Public-Deklarationen } end; implementation {$R *.dfm} { TFrame2 } function TFrame2.GetUeberschrift: string; begin result := Label_Ueberschrift.Caption; end; procedure TFrame2.SetUeberschrift(const Value: string); begin Label_Ueberschrift.Caption := Value; end; end.
Delphi-Quellcode:
var
Form1: TForm1; Frame2 : TFrame2; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Frame2 := TFrame2.Create(self); Frame2.Parent := Form1; Frame2.Align := alClient; Frame2.Ueberschrift := 'Test'; end; |
Re: von einer Form auf Frame zugreifen
@alias5000
Hallo Alias5000, verstanden habe ich Deinen Hinweis leider nicht, aber eigentlich möchte ich mit dem dynamischen Einbinden ja gerade verhindern, dass alle möglichen Frames inkl. aller Datenbankanbindungen beim Start des Programmes / Öffnen des Forms schon direkt geladen werden. Es soll also beim Aufruf eines bestimmten Menüs immer nur der Frame gezogen werden, der relevant ist. Ansonsten könnte ich ja auch alle Frames direkt im Formular einbinden und mit VISIBLE immer nur den Frame erscheinen lassen, den ich benötige. Aber eventuell gibt es ja auch andere Möglichkeiten für dieses Vorgehen, an die nicht zur Zeit nicht gedacht habe. @Nightshade Hallo Nightshade, vielen Dank für den Hinweis, aber
Delphi-Quellcode:
ist doch auch nichts anderes, als wenn ich
Frame2.Ueberschrift := 'Test';
Delphi-Quellcode:
zuweise. Beides gibt übrigens den gleichen Fehler "Undefinierter Bezeichner: 'LabelXYZ'" bzw. "...'Ueberschrift'"
Frame2.LabelXYZ.Caption := 'Test';
Ich denke, dass es daran liegt, dass zur Zeit der Kompilierung die Eigenschaften bzw. Controlls des Frames dem Form noch gar nicht bekannt sind, oder? Besten Dank Euch beiden Manfred |
Re: von einer Form auf Frame zugreifen
[quote="BrinkschulteManfred"]Hallo zusammen,
ist zwar schon eine Weile her, aber ich hatte / habe ein ähnliches Problem. Und zwar möchte ich verschiedene Frames dynamisch zur Laufzeit auf dem Formular einbinden, welches ich mit
Delphi-Quellcode:
mache. Dies funktioniert auch, allerdings möchte ich dann z.B. zur Laufzeit die Caption-Eigenschaft diverser Labels ändern. Leider weiß ich nun nicht, wie ich auf die Eigenschaften der Controlls in diesem dynamisch eingebundenen Frame zugreifen kann. Habe schon viel versucht, aber schon beim Entwurf scheitere ich jedesmal.
if Assigned(FrameInhalt) then FrameInhalt.Destroy;
FrameInhalt := TFrameFirma.Create(self); FrameInhalt.Parent := FormMain; FrameInhalt.Align := alClient; FrameInhalt.Show; Hat jemand Ideen? Es ist wie bei allen Objekten. FrameInhalt ist sicher als TFrame deklariert. Willst du auf Controls aus TFrameFirma zugreifen, musst du TypeCasting verwenden. Also:
Delphi-Quellcode:
Cu, Frank
if frameinhalt is TFrameFirma then
with TFrameFirma(frameinhalt) do begin Labelx.Caption := 'Text'; // und was auch immer end; |
Re: von einer Form auf Frame zugreifen
@milanlu
Alle Methoden eine Klasse sind erst verfügbar, wenn du aus der Klasse ien Object erzeugst. Dann kannst du über die Objectvariable mit FrameUmbenennen.Methode zugreifen. In deinem Beispiel ist es nicht notwendig, die Methode DateiLaden in die Klasse aufzunehmen. Es reicht in der Unit oder, wie schon erwähnt, als Class Methode... Beide Varianten im Beispiel;
Delphi-Quellcode:
Cu, Frank
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type Tframeumbenennen = class(TFrame) private { Private-Deklarationen } public class procedure DateiLaden(Directory: string); { Public-Deklarationen } end; procedure DateiLaden(Directory: string); implementation {$R *.dfm} // Zugrifff einfach über DateiLaden(... procedure DateiLaden(Directory: string); begin // dein Code end; // Zugrifff über Tframeumbenennen.DateiLaden(... class procedure Tframeumbenennen.DateiLaden(Directory: string); begin // Dein Code end; end. |
Re: von einer Form auf Frame zugreifen
@dataspider
Zitat:
Ich habe noch viel zu lernen ... Beste Grüße Manfred |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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