| Autor |
Beitrag |
Major1337 
      
Beiträge: 29
|
Verfasst: Fr 24.07.09 13:08
Zuletzt bearbeitet von Major1337 am Di 28.07.09 17:19, insgesamt 1-mal bearbeitet
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 24.07.09 13:11
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| type nameless = class(TObject)
private
F_CurrentActivityNumber: integer; F_NameOfButton: string; F_NextActivityNumber: integer; F_Telegramtyp :integer;
Public
property CurrentActivityNumber : Integer Read F_CurrentActivityNumber Write F_CurrentActivityNumber; property NameOfButton : String Read F_NameOfButton Write F_NameOfButton; property TextActivityNumber : Integer Read F_NextActivityNumber Write F_NextActivityNumber; property Telegramtyp : Integer Read F_Telegramtyp Write F_Telegramtyp;
end; |
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Major1337 
      
Beiträge: 29
|
Verfasst: Fr 24.07.09 13:15
Zuletzt bearbeitet von Major1337 am Di 28.07.09 17:19, insgesamt 1-mal bearbeitet
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 24.07.09 13:17
Du kannst natürlich auch Getter und Setter verwenden, aber das ist nur dann notwendig, wenn Du (im Setter) spezielle Überprüfungen durchführen oder weiteren Code ausführen möchtest.
|
|
Major1337 
      
Beiträge: 29
|
Verfasst: Fr 24.07.09 13:42
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 24.07.09 13:51
Funktioniert es denn?
In Deiner Klasse brauchst Du Procedures nicht. Die hatte Dir ja eigentlich schon auskommentiert.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Major1337 
      
Beiträge: 29
|
Verfasst: Fr 24.07.09 14:04
da templist eine String verlangt habe ich noch bei 3 Eigenschaften "IntToStr(tempList[?]) eingefügt.
Der einzigste Fehler:
MainForm.pas(479): E2250
Es gibt keine überladene Version von 'IntToStr', die man mit diesen Argumenten aufrufen kann
Liegt das daran das ich die Buttons noch nicht erstellt habe?
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 24.07.09 14:07
Was ist denn templist? Außerdem enthält Deine Klasse nicht die Buttonreferenz, sondern nur den Namen des Buttons, das hätte ich anders gemacht.
|
|
Major1337 
      
Beiträge: 29
|
Verfasst: Fr 24.07.09 14:15
Zuletzt bearbeitet von Major1337 am Di 28.07.09 17:19, insgesamt 1-mal bearbeitet
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 24.07.09 14:28
Andersrum: StrToInt. Du willst ja einen String in einen Integer wandeln und nicht einen Integer in String.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Fr 24.07.09 14:28
Du hast Deine Daten
21; Text1 DG11;21;21
22; Text2 DG12;22;21
23; Text3 DG13;23;21
%24; Text4 DG14;24;21
%34; Text 5 DG11;34;45
wie am anfang beschrieben, in eine Stringlist eingelesen,
templist[0] zeigt auf eine Zeile in deiner Liste,
also auf (0 = 1te Zeile)
21; Text1 DG11;21;21
du möchtest aber einen Wert aus der Zeile haben, also musst du die datenzeile 'nur noch' in einzelteile zerlegen, damit du auch die richtigen Werte zuweisen kannst
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Major1337 
      
Beiträge: 29
|
Verfasst: Fr 24.07.09 14:34
@Zuma
das hatte ich schon gestern gemacht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| begin Readln(FDatafile, daten); if copy(daten,1,1) <> '%' then begin tempList.Delimiter := ';'; tempList.StrictDelimiter := true; tempList.DelimitedText := daten; |
Ich muss jetzt nur noch die Buttons erstellen?
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 24.07.09 14:36
Ich hab jetzt doch einmal ein ausführlicheres Beispiel erstellt:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110:
| unit uButtontest;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IniFiles, Contnrs;
type TMyButtonclass = class private FAdditionaldata: Integer; FButton: TButton; public constructor Create; destructor Destroy;override; property AdditionalData: integer read FAdditionaldata write FAdditionaldata; property Button: TButton read FButton; end;
TfrmButtontest = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FButtons: TObjectList; procedure ShowButtonInfo(Sender: TObject); public end;
var frmButtontest: TfrmButtontest;
implementation
{$R *.dfm}
const IniName = 'C:\temp\Test.ini';
constructor TMyButtonclass.Create; begin inherited Create; FButton := TButton.Create(nil); end;
destructor TMyButtonclass.Destroy; begin FButton.Free; inherited; end;
procedure TfrmButtontest.FormCreate(Sender: TObject); var iIni: TIniFile; Sections: TStringList; i: Integer; Buttonclass: TMyButtonclass; begin FButtons := TObjectList.Create; iIni := TIniFile.Create(IniName); try Sections := TStringList.Create; try iIni.ReadSections(Sections); for I := 0 to Sections.Count - 1 do begin Buttonclass := TMyButtonclass.Create; Buttonclass.Button.Name := Sections[i]; Buttonclass.Button.Parent := Self; Buttonclass.Button.Left := iIni.ReadInteger(Sections[i],'Left',0); Buttonclass.Button.Top := iIni.ReadInteger(Sections[i],'Top',0); Buttonclass.Button.Width := iIni.ReadInteger(Sections[i],'Width',0); Buttonclass.Button.Height := iIni.ReadInteger(Sections[i],'Height',0); Buttonclass.Button.Caption := iIni.ReadString(Sections[i],'Caption',''); Buttonclass.Button.OnClick := ShowButtonInfo; Buttonclass.AdditionalData := i; FButtons.Add(Buttonclass); end; finally Sections.Free; end; finally iIni.Free; end; end;
procedure TfrmButtontest.FormDestroy(Sender: TObject); begin FButtons.Free; end;
procedure TfrmButtontest.ShowButtonInfo(Sender: TObject); begin if Sender is TButton then ShowMessage(Format('Ich bin der Button "%s", meine Caption ist "%s"', [TButton(Sender).Name,TButton(Sender).Caption])); end;
end. |
Die zugehörige Ini-Datei:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| [Bla] Caption=Blubb Left=1 Top=10 Width=75 Height=25
[Blubb] Caption=Wuppdi Left=1 Top=40 Width=75 Height=25 |
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 24.07.09 14:45
Ist bei der TObjectList OwnsObjects standardmäßig True? Sonst noch auf True setzen. Oder den Konstruktor der TMyButtonClass ändern:
Delphi-Quelltext 1:
| FButton := TButton.Create(self); |
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 24.07.09 14:47
Jepp, ist standardmäßig true. Und self dürfte nicht funktionieren, da TMyButtonclass nicht von TComponent abgeleitet ist 
|
|
Major1337 
      
Beiträge: 29
|
Verfasst: Fr 24.07.09 14:52
hmm.. ist das Beispiel von DeddyH schon eine TObjectList? :O
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 24.07.09 14:54
| Zitat: | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| TfrmButtontest = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FButtons: TObjectList; procedure ShowButtonInfo(Sender: TObject); public end; | |

|
|
Major1337 
      
Beiträge: 29
|
Verfasst: Fr 24.07.09 14:56
@DeddyH
arghh.. dummer Fehler ich habe den Scrollbalken gar nicht gesehen, vielen Dank!
|
|
Major1337 
      
Beiträge: 29
|
Verfasst: Fr 24.07.09 15:23
Zuletzt bearbeitet von Major1337 am Di 28.07.09 17:19, insgesamt 1-mal bearbeitet
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 24.07.09 15:40
Mein Code war ja nur ein Beispiel, um zu zeigen, wie man die Daten zusammenhalten kann. Dafür brauchst Du keine extra Ini-Datei, die hatte ich nur gepostet, um den von mir verwendeten Aufbau zu zeigen.
|
|