AGB  ·  Datenschutz  ·  Impressum  







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

Frame erstellen -> einbinden

Ein Thema von orakel · begonnen am 17. Feb 2006 · letzter Beitrag vom 18. Feb 2006
Antwort Antwort
orakel

Registriert seit: 18. Mai 2004
53 Beiträge
 
Delphi 6 Personal
 
#1

Frame erstellen -> einbinden

  Alt 17. Feb 2006, 21:45
Hallo,

Ich erstelle dynamisch einen Frame:

Frame1:= TFrame.create(self); Auf diesen Frame setzte ich dann noch einige Buttons usw.

wie kann ich diesen Frame1 jetzt öfter in Fenster einbinden.
Ich möchte ihn jetzt z.B. einmal in Form1 und einmal in Form2 einbinden.

Wie geht das?

gruß orakel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Frame erstellen -> einbinden

  Alt 17. Feb 2006, 22:00
Du erstellst eine abgeleitete Frameklasse mit den Buttons usw ab.

Delphi-Quellcode:
type
    TmyFrame = class(TFrame)
    ...
...
Form1.FormCreate( Sender: TObject);
begin
  frame := TMyFrame.Create(self);
end;

...
Form2.FormCreate( Sender: TObject);
begin
  frame := TMyFrame.Create(self);
end;
[Edit] Delphitags eingefügt[/Edit]
Markus Kinzler
  Mit Zitat antworten Zitat
orakel

Registriert seit: 18. Mai 2004
53 Beiträge
 
Delphi 6 Personal
 
#3

Re: Frame erstellen -> einbinden

  Alt 17. Feb 2006, 22:24
ich komm noch nicht ganz damit zurecht...

hab jetzt einmal folgendes Beispiel gemacht:

Delphi-Quellcode:
type
  TDruckFrame = class(TFrame);

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var frame1, frame2: TDruckframe;
begin
 Frame1:= TDruckframe.Create(self);
 Frame1.Parent:= Form1;
 Frame2:= TDruckframe.Create(self);
 Frame2.Parent:= Form2;
end;
Da sagt er mir aber beim Druckframe.create: 'Resource TDruckframe not found'

Was muss ich anders machen?
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Frame erstellen -> einbinden

  Alt 18. Feb 2006, 10:05
Hi,
wenn du ein TDruckframe von TFrame ableitest ohne etwas hinzuzufügen, dann solltest du einfach nur ein TFrame verwenden (hat die gleichen Eigenschaften).
Aber versuch mal das Semikolon hinter den Klammern wegzulassen und schreib ein end; hin

Delphi-Quellcode:
type
  TDeinFrame = class(TFrame)
  end;
Und nur mal nebenbei gefragt, wie man Frames zur Designzeit erstellt und einfügt ist dir klar?

Gruß Der Unwissende
  Mit Zitat antworten Zitat
orakel

Registriert seit: 18. Mai 2004
53 Beiträge
 
Delphi 6 Personal
 
#5

Re: Frame erstellen -> einbinden

  Alt 18. Feb 2006, 11:29
Ich hab jetzt auch mal probiert, des Semikolon wegzulassen und nen end hinzuhängen.
Ändert aber auch nichts.

Delphi-Quellcode:
type
  TDeinFrame = class(TFrame)
  end;
Mit Frames zur Designzeit arbeite ich schon länger. Da ist es ja einfach: Ich erstelle einfach nen Frame, und binde den entweder schon zur Designzeit oder zur Laufzeit ein. Das bekomme ich auch problemlos hin.

Nur weiss ich nicht, wie man vorgehen muss, wenn man den Frame erst zur Laufzeit erstellt...
...wie ich dann auch Objekte auf diesen Frame erstelle...

Der leere Frame war nur mal ein Beispiel, weil ich ja nichtmal das erstellen hinbekomme. Da sollen nachher schon noch Buttons und Sachen drauf.

Gruß orakel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Frame erstellen -> einbinden

  Alt 18. Feb 2006, 11:39
Zitat:
Nur weiss ich nicht, wie man vorgehen muss, wenn man den Frame erst zur Laufzeit erstellt...
...wie ich dann auch Objekte auf diesen Frame erstelle...
Wie bei einer Form:

Delphi-Quellcode:
TDruckFrame = class(TFrame)
    Button1: TButton;
  public
    constructor Create( AOwner: TComponent);
end;

constructor TDruckFrame.Create( AOwner: TComponent);
begin
    inherited Create;
    Button1 := TButton.Create( self);
end;
Markus Kinzler
  Mit Zitat antworten Zitat
orakel

Registriert seit: 18. Mai 2004
53 Beiträge
 
Delphi 6 Personal
 
#7

Re: Frame erstellen -> einbinden

  Alt 18. Feb 2006, 12:06
@mkinzler: Danke, werd ich später mal probieren.

Aber um nochmal auf mein erstes Problem mit dem Erstellen zurückzukommen.

Kann mir jemand sagen, was an diesem Code jetzt falsch ist?
Es kommt nämlich immer noch die oben genannte Meldung:

'Project Project1.exe raised exception class EResNotFound with message 'Resource TMyFrame not found'. Process stopped. Use Step or Run to continue.'

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TMyFrame = class(TFrame)
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Frame1: TMyframe;
begin
  Frame1:= TMyframe.Create(self);
  Frame1.Parent:= Form1;
end;
end.
(Ich hab ihn jetzt einmal auf das Wesentlichste verkleinert)

//Edit: Schreibfehler korrigiert.
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#8

Re: Frame erstellen -> einbinden

  Alt 18. Feb 2006, 12:22
Zitat:
Resource TMyFrame not found
... bedeutet, dass die DFM-Datei für den Frame fehlt. Diese erzeugt Delphi automatisch, wenn auf "herkömmliche" Weise ein neuer Frame angelegt wird (genau so, wie bei Forms). Ich hab keine Ahnung, ob das so funktioniert, wenn man den Frame in irgend einer Unit deklariert, die DFM-Datei selbst anlegt und per $R-Direktive einbindet. Vieleicht gehts ja, aber ich würde den Frame lieber auf die übliche Tour erzeugen. Wenn du die Controls auf dem Frame unbedingt zur Laufzeit anlegen willst, kannst du den entsprechenden Code in den Constructor deiner Frame-Klasse schreiben.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
orakel

Registriert seit: 18. Mai 2004
53 Beiträge
 
Delphi 6 Personal
 
#9

Re: Frame erstellen -> einbinden

  Alt 18. Feb 2006, 15:09
Hört sich nach einiger Arbeit an...werde wohl die Frames doch besser schon designen...

Trotzdem danke!

Gruß orakel
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:18 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