![]() |
Re: TEdit in Klasse ?
@Hansa
Habe versucht das mal in einer eigenen Klasse zusammenzufassen. Bekomme aber immer eine Schutzverletzung und weiß nicht warum. :gruebel:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, jpeg, XPMan, StdCtrls, ComCtrls, Menus, ToolWin, Buttons, JvHtControls, JvGIF, ImgList; type TForm1 = class(TForm) XPManifest1: TXPManifest; procedure FormClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TMapObject = class(Tform) private Image: TImage; // Für das entsprechende Einheitenbild besser vielleicht Imagelist, kann imagelist nur bmp ich brauch aber gif? Edit: TEdit; // Eingabefeld für Einheitenname Einheitenname: TStaticText; // Anzeige des Einheitennamens X,Y: Integer; // Position der Einheit auf Karte Y Typ: String; // z.B. "Infantry", Image ist abhaengig vom Einheitentyp wo kann ich diese Abhaengigkeit berechnen oder festlegen z.B wenn Einheitentyp = 2 dann image.picture.'Panzer.bmp" //draggen ermoeglichen und draggingstatus published property Einheitentyp :String read Typ write Typ; property MapX :Integer read x write x; property MapY :Integer read y write y; public { Public-Deklarationen } end; var Form1: TForm1; dra,helper:boolean; terrorspeicherx,terrorspeichery,xx,yy,terrorx,terrory:Integer; mapobject1:tmapobject; implementation {$R *.dfm} procedure TForm1.FormClick(Sender: TObject); begin mapobject1:=Tmapobject.create(form1); mapobject1.show; mapobject1.einheitenname.Caption:='test'; mapobject1.einheitenname.show; end; end. |
Re: TEdit in Klasse ?
Hai Richard,
Du musst die Objekte in deiner Klasse erst "Createn". Schreibe Dir also einen eignen ![]() ![]() P.S.: Warum nimmst Du in diesem Fall nich eine "normale" Form. Setzt deine Objekte darauf und erzeugst dir zur Laufzeit soviele davon wie Du brauchst? |
Re: TEdit in Klasse ?
Erstens mal das mit der Form. Glaube nicht, daß das auf diese Art überhaupt gehen kann. Aus dem Source ist jetzt aber einigermaßen ersichtlich, was gemacht werden soll. Allerdings stört mich noch was : Das TEdit in dem Object. Glaube fast nicht, daß das automatisch mit erzeugt wird. Die Objekte sind nämlich ziemlich dumm. Allerdings frage ich mich gerade, warum du kein StringGrid verwendest ? Damit wäre das mit der Form und auch das TEdit erledigt. Jeder beliebigen Zelle kann man da ein TObject "anheften". Also ich würde es so machen : für jede Spalte einen eigenen TObject-Typ und basta. Herrje, da ist ja noch ein TImage. Dann gib dem Objekt der Image-Spalte am Besten nur den Dateinamen mit und behandele das Ganze dann mit
Delphi-Quellcode:
im OnDrawCell. Ja, im Prinzip müßte das Ganze einwandfrei so gehen. Einfach wirds aber nicht gerade (erzeugen spaltenabhängiger TObjects, diese freigeben usw.). Alles andere wäre aber wohl noch komplizierter.
LoadFromFile (MeinImageObject.Filename)
|
Re: TEdit in Klasse ?
Hallo Sharky!
Hab mir jetzt nen Constructor und Destructor erstellt. Mein Project knippst aber die gesamte Deplhi Ide und den Debugger aus! :shock: Langsam glaube ich es war doch keine so gute Idee das mit Klassen machen zu wollen Ich dachte, das ich mir viel tipparbeit ersparen kann (der ganze record, array of record mist und das record speicherproblem), wenn ich das mit Klassen machen die nur meine benoetigten Eigenschaften und unterobjecte kapseln, aber das hier artet ja schon echt aus. Ich bekomme ja nicht mal das Object erstellt :( .
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, jpeg, XPMan, StdCtrls, ComCtrls, Menus, ToolWin, Buttons, JvHtControls, JvGIF, ImgList; type TForm1 = class(TForm) XPManifest1: TXPManifest; procedure FormClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TMapObject = class(TControl) private Image: TImage; // Für das entsprechende Einheitenbild besser vielleicht Imagelist, kann imagelist nur bmp ich brauch aber gif? Edit: TEdit; // Eingabefeld für Einheitenname Einheitenname: TStaticText; // Anzeige des Einheitennamens X,Y: Integer; // Position der Einheit auf Karte Y Typ: String; // z.B. "Infantry", Image ist abhaengig vom Einheitentyp wo kann ich diese Abhaengigkeit berechnen oder festlegen z.B wenn Einheitentyp = 2 dann image.picture.'Panzer.bmp" //draggen ermoeglichen und draggingstatus published property Einheitentyp :String read Typ write Typ; property MapX :Integer read x write x; property MapY :Integer read y write y; public constructor Create(Owner: TComponent); override; destructor Destroy; override; { Public-Deklarationen } end; var Form1: TForm1; mapobject1:tmapobject; implementation {$R *.dfm} constructor TMapObject.Create(Owner: TComponent); begin Create(image); Create(edit); Create(Einheitenname); end; destructor TMapObject.destroy; begin edit.free; image.free; einheitenname.free end; procedure TForm1.FormClick(Sender: TObject); begin mapobject1:=Tmapobject.create(self); //mapobject1.show; mapobject1.einheitenname.Caption:='test'; mapobject1.einheitenname.show; end; end. |
Re: TEdit in Klasse ?
Zitat:
|
Re: TEdit in Klasse ?
@ Spider,
willst du mir damit was sagen ? Ich versuche jetzt nochmal zu erklaeren was ich will,vielleicht hab ich ja auch einen Denkfehler drin Image: Timage edit:Tedit; Einheitenname: Tstatictext; Mapx,Mapy:integer; 1. klick mit linker maus taste auf form im onmousedown des forms 2. Tmapobject1.create; 2.1 zuweisen der Mauskoordinaten an Tmapobject (mapx,mapy); 3. wenn mapobject erstellt 4. zeige image an (mapx,mapY); 5. zeige edit an (mapx,mapy); 6. gib edit den focus 7. in onkeydown event von edit 7.1 if key=vk_return dann Einheitenname.caption:=edit.text 7.3 Positioniere Einheitenname (left,top); 7.2 Einheitenname.show; 8. fertig Ich hoffe es ist ersichtlich wie ich mir das vorstelle So long Richard //EDIT Sorry Spider hatte deinen Kommentar übersehen, jetzt stürtz es wenigstens nicht mehr ab. thx |
Re: TEdit in Klasse ?
Würde es denn nicht reichen, ein Edit auf der Form für alle Objekte zu nehmen?
|
Re: TEdit in Klasse ?
@Khabarakh
das waere sicherlich moeglich. Hab aber ganz andere sorgen, das object wird jetzt erstellt, aber ich kann das edit und den statictext nicht anzeigenlassen. wenn ich z.b einheitenname.show aufrufe passiert garnichts.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, jpeg, XPMan, StdCtrls, ComCtrls, Menus, ToolWin, Buttons, JvHtControls, JvGIF, ImgList; type TForm1 = class(TForm) XPManifest1: TXPManifest; procedure FormClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TMapObject = class(TControl) private Image: TImage; // Für das entsprechende Einheitenbild besser vielleicht Imagelist, kann imagelist nur bmp ich brauch aber gif? Edit: TEdit; // Eingabefeld für Einheitenname Einheitenname: TStaticText; // Anzeige des Einheitennamens X,Y: Integer; // Position der Einheit auf Karte Y Typ: String; // z.B. "Infantry", Image ist abhaengig vom Einheitentyp wo kann ich diese Abhaengigkeit berechnen oder festlegen z.B wenn Einheitentyp = 2 dann image.picture.'Panzer.bmp" //draggen ermoeglichen und draggingstatus published property Einheitentyp :String read Typ write Typ; property MapX :Integer read x write x; property MapY :Integer read y write y; public constructor Create(Owner: TComponent); override; destructor Destroy; override; { Public-Deklarationen } end; var Form1: TForm1; mapobject1:tmapobject; implementation {$R *.dfm} constructor TMapObject.Create(Owner: TComponent); begin Image := TImage.Create(Owner); // So muss das heißen Edit := TEdit.Create(Owner); Einheitenname := TStaticText.Create(Owner); end; destructor TMapObject.destroy; begin edit.free; image.free; einheitenname.free end; procedure TForm1.FormClick(Sender: TObject); begin mapobject1:=Tmapobject.create(self); //mapobject1.show; mapobject1.einheitenname.Caption:='test'; mapobject1.einheitenname.show; end; end. |
Re: TEdit in Klasse ?
Hi, ich habe zwar nicht alle Einträge davor durchgelesen, aber ich würde sagen, im Constructor und Destructor fehlt noch jeweils ein "inherited"! Außerdem: TImage, TEdit und TStaticText brauchen nach ihrem Createn eine Zuweisung für ihre Parent-Property, ohne die sie sowieso nicht sichtbar werden können.
MfG |
Re: TEdit in Klasse ?
Hallo TStringlist,
was meinst du mit Parent property in der delphi hilfe ist zwar ein haufen parentzeugs aber nix über parent property. Außerdem weis ich nicht was ich da für eine geerbte property angeben soll wenn Tmapobject das hoechste object in der hierarchie von Tmapobject ist. tmapobject ist von typ tcontrol. und dort gibt es eine property visible, meinst du die ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 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