Hallo,
Ich habe jetzt etwas viel geschrieben ich hoffe das sich jemmand die mühe macht diese
Frage durchzulesen und eine lösung für das "ausfürhlich" beschriebende problem zu finden *G*
Vielen Dank im voraus.
Ich möchte mir ein eigene "kleine"
GUI schreiben.
Die nur ein paar
standart komponenten hat wie z.b.
- Button
- Edit
- Formula
ersteinmal, später kann ich sie ja noch erweitern.
Ich habe mir jetzt einige gedanken gemacht für den Klassenaufbau und auch
angefangen da bin ich leider auf unerwartete probleme gestoßen.
Ich möchte ein obj per Create erstellen wie in der "Delphi
GUI"
und genau hier fangen die probleme an:
ich wollte eine allgemine komponenten liste erstellen die habe ich
in der
Unit definiert:
Delphi-Quellcode:
var
GUI:TGUI;
implementation
dort sollen alle komponenten rein die mit Create erstellt werden.
TGUI sieht so aus:
Delphi-Quellcode:
TGUI = class
private
public
items:TObjectList;
constructor Create;
procedure Add(obj:TStdObj);
procedure Del(Index:Integer);
procedure Draw;
end;
das Stanadt obj von denn allen abgeleitet werden müssen damit es
funktioniert sieht so aus:
Delphi-Quellcode:
TSTDObj = class
private
public
GFL:TMyCanvas;
Sel:TStdObj;
Namen:String;
Caption:String; // Enhälst den Anzeige Text
Hint:String; // Enhälst eine Genaue Beschreibung der Liste
Parent:String; // Enthälst den Unterkomponente
Typ1:String; // Benuterdefniert
Visible:Boolean; // Sichtbar oder unsichtbar
ShowHint:Boolean; // Beschreibung anzeigen oder nicht anzeigen
isStdList:Boolean; // Fügt in eine Eigne Liste ein die jede komponente hat
Typ:Integer; // Benuterdefniert
x,y,w,h,r:Integer; // Position(x,y) Größe(w,h)
ObjTyp:Integer; // Kreis oder Rechteck
absX,AbsY:Integer; // Abstand zum Rand
onMouseMove:TMouseMove;
onMouseUp:TMouseUp;
onMouseDown:TMouseDown;
onMouseLave:TMouseLave;
onKeyDown:TKeyDown;
onKeyPress:TKeyPress;
onKeyUp:TKeyUp;
constructor Create(h:HWND;obj:Tobj);
procedure Draw;
end;
Jedes obj gehört zu einem Formual ohne gehts nicht:
Delphi-Quellcode:
TFormula = class(TStdObj)
private
MoveT:Integer;
public
Titel_W,Titel_H,Titel_X,Titel_Y:Integer;
f:TForm;
EnabledColor:TColor;
constructor Create(Form:TForm; pCaption:String);
procedure Draw;
procedure Click(px,py:Integer;Button: TShiftState);
procedure MoveUp(px,py:Integer;Button: TMouseButton);
end;
implementation
constructor TFormula.Create(Form:TForm;pCaption:String);
begin
inherited Create(Form.Handle,self);
EnabledColor:=clRed;
f:=Form;
x:=0; y:=0; w:=form.Width; h:=Form.Height;
Titel_W:=w; Titel_H:=20; Titel_X:=0; Titel_Y:=0;
Form.BorderStyle:=bsNone;
Form.Position:=poDesigned;
Caption:=pCaption;
MoveT:=-1;
end; // Create
// aufruf
procedure TForm1.FormCreate(Sender: TObject);
var
Button:TMyButton;
begin
f:=TFormula.Create(Form1,'Dies ist ein kleiner test');
f.namen:='Form1';
button:=TMyButton.Create(Form1.Handle,button);
button.Caption:='Hallo';
button.Namen:='button1';
button.x:=10;
button.y:=10;
Button.w:=10;
Button.h:=10;
f.absX:=2;
f.absY:=2;
end;
Das Problem ist jetzt wenn ich ein variable änder z.b. den Caption wird dies leider nicht in die obj liste übernommen.
und ich möchte gerne das diese auch übernommen werden. d.h. alle variablen die ich änder kann sollen auto. in
die obj liste übernommen werden. ich dachte mir das ein "zeiger" oder was änliches auf das gerade erstelle obj
zeigt. Wie z.b. mit folgedner defniation:
test:=test3
jetzt wird ja test mit test3 verküpft und so dachte ich mir das in meinem problem auch.
Das ganze soll wie in der Delphi
GUI ablaufen. Dachte ich mir.
ich hoffe ihr versteht worauf ich hinaus möchte.
Anmerkung:
ich schreibe zwar schon seit ca 5-7 Jahren in Delphi meine Programme aber mit der
OOP
habe ich bis noch nicht so ausführlich gearbeitet d.h. Ich habe schon klassen defniniert
und ereignisse und eigenschaften erstellt nur was ich bis jetzt noch nicht getan habe ist
mit vererbungen zu arbeiten also das "eigentliche"
oop.