AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

von einer Form auf Frame zugreifen

Ein Thema von milanlu · begonnen am 31. Dez 2005 · letzter Beitrag vom 22. Feb 2006
Antwort Antwort
Seite 2 von 2     12   
milanlu

Registriert seit: 16. Nov 2005
51 Beiträge
 
Delphi 2005 Personal
 
#11

Re: von einer Form auf Frame zugreifen

  Alt 31. Dez 2005, 21:02
[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
Milan
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: von einer Form auf Frame zugreifen

  Alt 31. Dez 2005, 21:04
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?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
milanlu

Registriert seit: 16. Nov 2005
51 Beiträge
 
Delphi 2005 Personal
 
#13

Re: von einer Form auf Frame zugreifen

  Alt 31. Dez 2005, 21:07
könntest du bitte mir ein beispiel schreiben wie ich das anstellen soll. mit classen bin ich nicht so gut.
Milan
  Mit Zitat antworten Zitat
Benutzerbild von BrinkschulteManfred
BrinkschulteManfred

Registriert seit: 23. Sep 2003
Ort: Menden
97 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: von einer Form auf Frame zugreifen

  Alt 22. Feb 2006, 14:05
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:
  if Assigned(FrameInhalt) then FrameInhalt.Destroy;
FrameInhalt := TFrameFirma.Create(self);
FrameInhalt.Parent := FormMain;
FrameInhalt.Align := alClient;
FrameInhalt.Show;
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.

Hat jemand Ideen?

Beste Grüße
Manfred
  Mit Zitat antworten Zitat
Benutzerbild von alias5000
alias5000

Registriert seit: 10. Sep 2005
Ort: Heilbronn
268 Beiträge
 
#15

Re: von einer Form auf Frame zugreifen

  Alt 22. Feb 2006, 14:29
Wenn du z.B. ein dynamisches Array machst, und dir dadrin alle Frames speicherst:

Frames: array of TMyFrame; Und dann schreibst du einfach
Delphi-Quellcode:
setlength(Frames, DieLänge);
Frames[xy] := TMyFrame.Create(Self);
Frames[xy].Parent := Form1;
Frames[xy].Align := alTop
{usw}
Verstanden?
Im Interesse der Purierung des germanischen Ideoms ist es opertum den immensen Usus peregrieder Verben auf ein Minimum zu reduzieren.
--> www.lanchat2.de <---
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: von einer Form auf Frame zugreifen

  Alt 22. Feb 2006, 14:30
Versuchs mal so :

Delphi-Quellcode:
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.
Und dann in unit1 :

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;
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
Benutzerbild von BrinkschulteManfred
BrinkschulteManfred

Registriert seit: 23. Sep 2003
Ort: Menden
97 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: von einer Form auf Frame zugreifen

  Alt 22. Feb 2006, 15:40
@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
  Frame2.Ueberschrift := 'Test'; ist doch auch nichts anderes, als wenn ich
  Frame2.LabelXYZ.Caption := 'Test'; zuweise. Beides gibt übrigens den gleichen Fehler "Undefinierter Bezeichner: 'LabelXYZ'" bzw. "...'Ueberschrift'"

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
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: von einer Form auf Frame zugreifen

  Alt 22. Feb 2006, 16:08
[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:
  if Assigned(FrameInhalt) then FrameInhalt.Destroy;
FrameInhalt := TFrameFirma.Create(self);
FrameInhalt.Parent := FormMain;
FrameInhalt.Align := alClient;
FrameInhalt.Show;
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.

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:
if frameinhalt is TFrameFirma then
  with TFrameFirma(frameinhalt) do
  begin
    Labelx.Caption := 'Text';
    // und was auch immer
  end;
Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: von einer Form auf Frame zugreifen

  Alt 22. Feb 2006, 16:21
@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:
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.
Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von BrinkschulteManfred
BrinkschulteManfred

Registriert seit: 23. Sep 2003
Ort: Menden
97 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: von einer Form auf Frame zugreifen

  Alt 22. Feb 2006, 16:42
@dataspider
Zitat:
Es ist wie bei allen Objekten.
FrameInhalt ist sicher als TFrame deklariert.
Willst du auf Controls aus TFrameFirma zugreifen, musst du TypeCasting verwenden.
Super, das war es, was ich gesucht habe!

Ich habe noch viel zu lernen ...

Beste Grüße
Manfred
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:41 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