Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

OOP Problem: änderungen werden nicht übernommen

  Alt 25. Dez 2005, 10:09
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.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat