AGB  ·  Datenschutz  ·  Impressum  







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

TEdit in Klasse ?

Ein Thema von richard_boderich · begonnen am 7. Mai 2005 · letzter Beitrag vom 10. Mai 2005
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#11

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 04:01
@Hansa


Habe versucht das mal in einer eigenen Klasse zusammenzufassen. Bekomme aber immer eine Schutzverletzung und
weiß nicht warum.



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.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#12

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 06:37
Hai Richard,

Du musst die Objekte in deiner Klasse erst "Createn". Schreibe Dir also einen eignen Delphi-Referenz durchsuchenconstructor in dem Du diese erzeugst und einen Delphi-Referenz durchsuchendestructor wo Du sie auch wieder freigibst.


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?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#13

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 13:50
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 LoadFromFile (MeinImageObject.Filename) 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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#14

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 13:53
Hallo Sharky!

Hab mir jetzt nen Constructor und Destructor erstellt.
Mein Project knippst aber die gesamte Deplhi Ide und den Debugger aus!
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.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#15

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 14:12
Zitat von richard_boderich:
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);
  EnheitenName := 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.
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#16

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 14:41
@ 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
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#17

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 15:25
Würde es denn nicht reichen, ein Edit auf der Form für alle Objekte zu nehmen?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#18

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 16:22
@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.
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 17:05
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
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#20

Re: TEdit in Klasse ?

  Alt 8. Mai 2005, 17:41
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 ?
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 21:55 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