Autor Beitrag
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Sa 25.07.09 03:06 
Die beiden Vorredner, die Dir eine Neue Button-Klasse angeboten haben, haben durchaus recht, dass dies der beste Weg ist, weil Du

a) die Klassen-Instanzen eh dynamisch erzeugst
b) Du keine extra Liste brauchst um die zusätzlichen Eigenschaften der Buttons denselbigen zuzuordnen.

Was Du sicherlich nicht brauchst, sind Set/Get-Funktionen für properties. Wahscheinlich brauchst Du nichtmal properties, wenn Du nicht gerade etwas auf das setzen/lesen hin ausführen willst.

Also das einfachste, was ich mir da vorstellen kann :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
Type TMyButton = class(TButton)
     public
       ExtraInteger1 : Integer;
       ExtraInteger2 : Integer;
       ExtraString1  : String;
       ExtraString2  : String;
     end;


Nun hast Du schon eine Button-Klasse, die macht alles, wie deine normalen Buttons, hat aber 4 zusätzliche Felder, wo Du was für jeden Button speichern kannst.

Beim Erzeugen brauchst Du nur die Klassen jeweils von TButton auf TMyButton ändern und während des Einlesens kannst Du die extrawerte in diese neuen variablen-Felder speichern.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
FMyButton := TMyButton.Create(Self);
FMyButton.ExtraInteger := 5;
FMyButton.ExtraString := 'TestString';
FMyButton.Height := 25;
FMyButton.Name := 'Button1';
FMyButton.Caption := 'Drück mich ganz lieb'

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
Major1337 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Sa 25.07.09 18:01 
Hey HelgeLange,

brauch man für deinen Vorschlag keine TObjectList, reicht es einfach so?
Ich habe oben die ganze Procedure gepostet, wie es später aussehen sollte.
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Sa 25.07.09 18:30 
Naja, Du hattest ja Dein Button array.
Ich selbst bevorzuge Listen, das würde dann so aussehen :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var FMyButtons : TList;
    MyButton : TMyButton;
begin
  For i := 1 To ButtonCount Do begin  // ButtonCount ist die Anzahl der Button, die Du aus der Datei holst
    MyButton := TMyButton.Create(Self);
    MyButton.Top := 23;               // hier setzt Du die Variablen, die Du aus der Datei liest
    ...
    MyButton.ExtraInteger1 := 15;     // hier die extra Werte
    ...
    FMyButtons.Add(MyButton);         // und in die Liste einfügen
    MyButton.OnClick := MyOnClick;
  end;
end;


Zum Zugreifen auf einen Button einfach aus der Liste raus drauf zugreifen mit einem TypeCast :

ausblenden Delphi-Quelltext
1:
TMyButton(FMyButtons.Items[idx]).ExtraInteger1 := 444// idx ist der index in der Liste des jeweiligen Buttons					


und später beim Programm beenden einfach alle freigeben

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
While FMyButtons.Count > 0 Do begin
  TMyButton(FMyButtons.Items[0]).Free;
  FMyButtons.Delete(0);
end;
FreeAndNil(FMyButtons);

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
Major1337 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Sa 25.07.09 18:43 
XXXXXXXXXXXXXXX


Zuletzt bearbeitet von Major1337 am Di 28.07.09 17:20, insgesamt 1-mal bearbeitet
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Sa 25.07.09 20:17 
So wie ich das im ersten QuellCode sehe, erzeigst Du den Button in gibst ihn am Ende wieder frei. Ist das so gewollt ?
Normalerweise solltest Du, wenn die Buttons während der ganzen Laufzerit des Programms da sein sollten, beim FormCreate oder FormShow-event die Buttons erzeugen und mit dem Eigenschaften belegen, die Du aus deiner Datei liest.

Das kannst Du mit dem ersten QuellCode meines Beispiels machen.


Im OnClick-Event kannst Du einfach den Sender jeweils Typecasten und entsprechend auswerten anhand der Eigenschaften, was Du im OnClick machen sollst

ausblenden Delphi-Quelltext
1:
TMyButton(Sender).ExtraInteger1 := 12;					


und im FormClose- oder FormDestroy-Event kannst Du die Liste freigeben, wie ich es Dir gezeigt hatte.
Weiteren Zugriff brauchast Du wahrscheinlich nichtmal auf die Buttons in der Liste selbst, da sie sich wahrscheinlich nicht während der Laufzeit ändern ausser im OnClick-Event. Also ignorier die Liste soweit, dass Du sie erzeugst, die Buttons drin ablegst und am Ende durchgehst und die Buttons freigibst.

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
Major1337 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Sa 25.07.09 21:45 
XXXX


Zuletzt bearbeitet von Major1337 am Di 28.07.09 17:20, insgesamt 1-mal bearbeitet
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Sa 25.07.09 22:41 
Einmal im FormShow oder FormCreate Event musst Du die Liste erzeugen

ausblenden Delphi-Quelltext
1:
2:
3:
begin
  FMyButtons := TList.Create;
end;


und der Code zum leeren der Liste und das Freigeben muss im FormClose oder FormDestroy stehen.

Ich hoffe doch mal, dass Du weisst, wie Du Events belegst ;)

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
Major1337 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 26.07.09 09:51 
XX


Zuletzt bearbeitet von Major1337 am Di 28.07.09 17:20, insgesamt 1-mal bearbeitet
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 26.07.09 12:20 
Darf man fragen, wieso jetzt eine TList statt einer TObjectlist zum Einsatz kommt?
Major1337 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 26.07.09 12:34 
Mir ist es ehrlich gesagt egal ob es ein TList oder TObjectList ist, ihr wisst doch wie es geht, könnt ihr mir es bitte machen.
Ich glaube ich habe euch schon genug Eigeninitiative gezeigt.
Bitte ;)
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 26.07.09 13:11 
Wir haben Dir das Rüstzeug doch bereits gegeben: Du hast nun einen Button mit erweiterten Eigenschaften sowie eine Liste zur Verwaltung von Instanzen dieses Buttons. Mehr brauchst Du doch nicht.
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: So 26.07.09 17:25 
mit events belegen meinte ich die FormCreate/FormDestroy des Forms, das ButtonEvent hast Du doch schon

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
Major1337 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 26.07.09 19:08 
ohh man solangsam bekomme ich Kopfweh von den TList oder TObjectList. Ich weiß einfach nicht wie ich das machen soll, das mit der Buttonklasse kann ich noch nachvollziehen. Könnt ihr mir Bitte diese Arbeit, die für euch sehr wahrscheinlich leicht erscheint machen. Ich bin ich euch so dankbar, wenn ihr das für mich macht!!
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Mo 27.07.09 02:01 
Zitat:
Da ich aber jetzt ein mehrwöchiges Praktikum absolvieren muss und in unserer Umgebung leider keine Firmen gab

...
Könnt ihr mir Bitte diese Arbeit, die für euch sehr wahrscheinlich leicht erscheint machen. Ich bin ich euch so dankbar, wenn ihr das für mich macht!!


Wir sind ja nicht dazu da, Dir Deine Praktikumsarbeit zu machen, das wäre nicht der Sinn der ganzen Übung.

Wie man die TList macht, hab ich Dir geschrieben, das wirst Du Dir schon selbst in den Code kopieren müssen, wo, habe ich Dir auch gesagt.

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 29.07.09 11:31 
Moin!

Thread wegen Vandalismus gesperrt, Rückfragen per VA ans Team.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.