![]() |
Instanzen eines Formulars...
Hallo,
stehe etwas auf dem Schlauch. Habe einer Anwendung ein Formular hinzugefügt. Dieses Formular hat ein paar dynamisch erzeugte TImages und einen Array of TObject wo der Bilderspeicher drin ist der von dem Formular aus auch geladen wird. Über eine Scrollbar kann man den Startindex der zu zeichnenden Bilder wählen. Nun hätte ich gern mehrere Instanzen dieses Formulars. Der Speicher ist im neuem Formular eine globale Variable. Denke da liegt mein Problem... Wie kann ich aus einem Formular mehrere Instanzen erzeugen die dann aber auch getrennte Speicher haben ? Danke und Gruss Calli |
AW: Instanzen eines Formulars...
// es war wahrscheinlich falsch, bitte beitrag löschen.
|
AW: Instanzen eines Formulars...
Zitat:
Zitat:
|
AW: Instanzen eines Formulars...
Hallo,
so ist es aktuell...aber wohl Bockmist..
Delphi-Quellcode:
type
TCatForm = class(TForm) od1: TOpenDialog; GB1: TGroupBox; sb1: TScrollBar; E_SB: TEdit; BT_LoadCat: TButton; Label1: TLabel; E_Start: TEdit; public Form: TCatForm; Rawfile:array[0..10000000] of byte; f:File; CAT:array[0..32767] of TCadpage; PImage:array[1..31] of TImage; Startindex:Word; procedure FormCreate(Sender: TObject); procedure BT_LoadCatClick(Sender: TObject); procedure sb1Change(Sender: TObject); |
AW: Instanzen eines Formulars...
Was macht die public Deklaration
Form: TCatForm; dort? Das sieht seltsam aus. Die von Dir beschriebene globale Variable sehe ich dort nicht. |
AW: Instanzen eines Formulars...
Hier mal das komplette Elend, nur in den Prozeduren etwas eingekürzt.
Delphi-Quellcode:
unit U_Catform; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; Type TPacPoint=packed record x,y,z:smallint; S2:Byte; S3:Byte; R,G,B:Byte; end; Type TCadpage=record n:integer; Marked:Boolean; Points:Array of TPacPoint; end; type TCatForm = class(TForm) od1: TOpenDialog; GB1: TGroupBox; sb1: TScrollBar; E_SB: TEdit; BT_LoadCat: TButton; Label1: TLabel; E_Start: TEdit; public f:File; CAT:array[0..32767] of TCadpage; PImage:array[1..31] of TImage; Startindex:Word; procedure FormCreate(Sender: TObject); procedure BT_LoadCatClick(Sender: TObject); procedure sb1Change(Sender: TObject); procedure GB1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Procedure Create_Images; Procedure Pics_Zeichnen(Pindex,CatIndex:integer); private public end; implementation {$R *.dfm} procedure TCatForm.FormCreate(Sender: TObject); begin Create_Images; end; Procedure TCatForm.Create_Images; var i,z,s:integer; Begin i:=1; for z := 1 to 4 do Begin for s := 1 to 6 do Begin PImage[i]:=TImage.Create(nil); // ??? PImage[i].Parent:=GB1; PImage[i].Width :=128; PImage[i].Height:=128+16; PImage[i].Top :=15+( (z-1)*(128+16+16)); PImage[i].Left :=10+( (s-1)*(128+16)); PImage[i].Canvas.Brush.Color:=clblack; PImage[i].Canvas.FillRect(rect(0,0,128,128+16)); PImage[i].Canvas.Brush.Color:=$A0A0A0; PImage[i].Canvas.FillRect(rect(0,128,128,128+16)); PImage[i].OnMouseDown:=gb1mousedown; // ??? PImage[i].Tag:=i-1; //PImage[i].Stretch:=true; i:=i+1; End; End; End; Procedure TCatForm.Pics_Zeichnen(Pindex,CatIndex:integer); var i,ii:Integer; x,y,z:integer; pb,rp:byte; R,G,B:Byte; LastWasBlank:Boolean; Begin //....Bilder aus Cat[index].points zeichnen End; procedure TCatForm.GB1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i,pos:Integer; begin Beep; if sender is TImage then Begin with sender as TImage do Begin pos:=tag; End; End; for i := 0 to 32767 do CAT[i].Marked:=false; CAT[pos].Marked:=true; sb1Change(self); end; procedure TCatForm.sb1Change(Sender: TObject); var s,i:integer; begin // Startindex der zu zeichnenden Bilder ändern end; procedure TCatForm.BT_LoadCatClick(Sender: TObject); begin // ...Bilderdaten in CAT[Index] laden und dann zeichnen for i := 0 to 23 do Pics_Zeichnen(i+1,i); end; end. |
AW: Instanzen eines Formulars...
Wo ist denn jetzt die Deklaration von "Form" geblieben, die vorhin noch da war?
Also eigentlich sieht das alles OK aus. Wie erzeugst Du denn das Formular bzw. die Instanzen des Formulars? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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