Frage zu meinem Lazarus Programm
-
- Beiträge: 59
- Registriert: Fr 2. Nov 2012, 19:44
Frage zu meinem Lazarus Programm
Hey Community,
ich habe folgendes Problem zu meinem Lazarus Programm:
Ich habe für die Schule eine Lösung zu dem Damenproblem geschrieben...
Nun soll ich noch einbauen, das man sich jede Lösung noch einmal angucken kann.
Ich habe die Idee gehabt jede Lösung in eine Textdatei zu schreiben, die das Programm dann auslesen kann.
Bis jetzt habe ich folgendes:
Ich habe eine Scrollbox erstellt.. in der 92 Label sind. Jedes Label hat die Caption seiner Lösung ... also z.B. "Lösung 1".
dann habe ich gesagt das wenn man auf das Label klickt, das er eine procedure öffnen soll.
Meine Frage ist jetzt.
Wie kann ich die Textdateien öffnen,auslesen und bearbeiten?
Wie kann ich der procedure sagen welches Label aus der Scrollbox angeklickt wurde.
Dazu habe ich die den Ansatz das jedes Label einen Hint bekommen hat.
Aus einem Programm das mir mal jm. als hilfe geschrieben hat .. hab ich noch das gefunden: (sender as TImage).Hint
ich habe folgendes Problem zu meinem Lazarus Programm:
Ich habe für die Schule eine Lösung zu dem Damenproblem geschrieben...
Nun soll ich noch einbauen, das man sich jede Lösung noch einmal angucken kann.
Ich habe die Idee gehabt jede Lösung in eine Textdatei zu schreiben, die das Programm dann auslesen kann.
Bis jetzt habe ich folgendes:
Ich habe eine Scrollbox erstellt.. in der 92 Label sind. Jedes Label hat die Caption seiner Lösung ... also z.B. "Lösung 1".
dann habe ich gesagt das wenn man auf das Label klickt, das er eine procedure öffnen soll.
Meine Frage ist jetzt.
Wie kann ich die Textdateien öffnen,auslesen und bearbeiten?
Wie kann ich der procedure sagen welches Label aus der Scrollbox angeklickt wurde.
Dazu habe ich die den Ansatz das jedes Label einen Hint bekommen hat.
Aus einem Programm das mir mal jm. als hilfe geschrieben hat .. hab ich noch das gefunden: (sender as TImage).Hint
Re: Frage zu meinem Lazarus Programm
Wieso das denn?Have a nice Day hat geschrieben: Bis jetzt habe ich folgendes:
Ich habe eine Scrollbox erstellt.. in der 92 Label sind. Jedes Label hat die Caption seiner Lösung ... also z.B. "Lösung 1".
Dafür gibt es doch z.B. TCombobox. Da hat dann auch jedes Item seinen Index.
Textdateien liest du am einfachsten mit TStringList.
-
- Beiträge: 59
- Registriert: Fr 2. Nov 2012, 19:44
Re: Frage zu meinem Lazarus Programm
Ich hatte zur Verschönerung noch hinter jedes Label ein Hintergrundbild gelegt.
Da das in der TComboBox nicht geht habe ich das mit der ScrollBox gemacht.
Es ist so ähnlich wie die Bilderliste die ich einmal gemacht hab.
Da das in der TComboBox nicht geht habe ich das mit der ScrollBox gemacht.
Es ist so ähnlich wie die Bilderliste die ich einmal gemacht hab.
-
- Beiträge: 726
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Frage zu meinem Lazarus Programm
Have a nice Day hat geschrieben:...
Ich habe eine Scrollbox erstellt.. in der 92 Label sind. Jedes Label hat die Caption seiner Lösung ... also z.B. "Lösung 1".
dann habe ich gesagt das wenn man auf das Label klickt, das er eine procedure öffnen soll.
...
Aus ähnlichen Gründen arbeiten Programme genauso langsam wie vor 20 Jahren obwohl die Rechenleistung mindestens 100 mal gestiegen ist. Und Internet langsam ist obwohl man DSL-Anschluß hat.Have a nice Day hat geschrieben:Ich hatte zur Verschönerung noch hinter jedes Label ein Hintergrundbild gelegt.
Da das in der TComboBox nicht geht habe ich das mit der ScrollBox gemacht.
Es ist so ähnlich wie die Bilderliste die ich einmal gemacht hab.
Mann sollte Programmierer und Internetseitendesigner/programmierer mit lowend Maschienen ihre Programme und Seiten machen lassen.

------------------
Übrigens für so etwas kannst du auch Listbox (Ownerdraw) und Stringgrid (selbstzeichnen benutzen). Auch mit Hintergrundbild.
Du kannst auch die Tag-Eigenschaft von Komponenten verwenden. Labels druchnumerieren und bei allen OnClick-Ergeignis mit eine Methode behandeln z.b.:
Code: Alles auswählen
procedure TForm1.LabelsClick(Sender: TObject);
begin
Stringlist.Loadfromfile('xxxx\lösung'+IntToStr(Sender(TComponent).Tag)+'.txt');
end;
Re: Frage zu meinem Lazarus Programm
Bitte nicht Software "verschönern" und auch keine Screenshot davon hochladen. Ich kriege schon fast Augenkrebs, wenn ich mir das nur vorstelle.Have a nice Day hat geschrieben:Ich hatte zur Verschönerung noch hinter jedes Label ein Hintergrundbild gelegt.

Ginge schon, man sollte aber nicht.Have a nice Day hat geschrieben:IDa das in der TComboBox nicht geht habe ich das mit der ScrollBox gemacht.
-
- Beiträge: 59
- Registriert: Fr 2. Nov 2012, 19:44
Re: Frage zu meinem Lazarus Programm
@Soner:
Ich arbeite nun seit ca. einem 3/4 Jahr mit Lazarus .. und hab nie eine gute Einführung bekommen...
Ich glaube es ist nicht so schlimm wenn man da nicht alle Programm gleich optimiert geschrieben hat
@Theo:
Was hast du gegen ein schönes Programm?
Ich mag halt Design !
Ich arbeite nun seit ca. einem 3/4 Jahr mit Lazarus .. und hab nie eine gute Einführung bekommen...
Ich glaube es ist nicht so schlimm wenn man da nicht alle Programm gleich optimiert geschrieben hat

@Theo:
Was hast du gegen ein schönes Programm?
Ich mag halt Design !
Re: Frage zu meinem Lazarus Programm
Ich mag auch "Design", aber das machen bereits die Themes mit den Widgets für einen einheitlichen und professionellen Look.Have a nice Day hat geschrieben: @Theo:
Was hast du gegen ein schönes Programm?
Ich mag halt Design !
Wenn das Programmiererchen sein Elaborat nach seinem Geschmack "verschönern" möchte, geht der Schuss zu 95% nach hinten raus.
Der Benutzer der Software muss dann darunter leiden, selbst wenn es dem Programmierer gefällt.
-
- Beiträge: 59
- Registriert: Fr 2. Nov 2012, 19:44
Re: Frage zu meinem Lazarus Programm
Willst du damit sagen Programmierer können kein allgemein als schön anerkanntes Design erstellen...
Besstes Gegenbeispiel Apple...
Das Design von Lazarus wurde auch von Programmieren entworfen
Besstes Gegenbeispiel Apple...
Das Design von Lazarus wurde auch von Programmieren entworfen

Zuletzt geändert von Have a nice Day am Sa 19. Jan 2013, 20:37, insgesamt 1-mal geändert.
Re: Frage zu meinem Lazarus Programm
Den Satz verstehe ich nicht.Have a nice Day hat geschrieben:Willst du damit sagen Programmierer können allgemein als schön anerkanntes Design erstellen...
Lazarus hat kein graphisches Design, mit Ausnahme des Splash Screen und der ist sehr unprofessionell.Have a nice Day hat geschrieben: Das Design von Lazarus wurde auch von Programmieren entworfen
Die Themes und Widgets haben ein Design, und die sind nicht von Programmierern entworfen.
-
- Beiträge: 59
- Registriert: Fr 2. Nov 2012, 19:44
Re: Frage zu meinem Lazarus Programm
ach egal...
wo kann ich den die Stringlist finden?
wo kann ich den die Stringlist finden?
-
- Beiträge: 59
- Registriert: Fr 2. Nov 2012, 19:44
Re: Frage zu meinem Lazarus Programm
Wenn ich in einer Funktion eine andere Funktion aufrufe ... wartet die erste Funktion dann bist die aufgerufene durchlaufen ist?
Re: Frage zu meinem Lazarus Programm
http://lmddgtfy.net/?q=TStringList%20freepascalHave a nice Day hat geschrieben: wo kann ich den die Stringlist finden?
Re: Frage zu meinem Lazarus Programm
Ja.Have a nice Day hat geschrieben:Wenn ich in einer Funktion eine andere Funktion aufrufe ... wartet die erste Funktion dann bist die aufgerufene durchlaufen ist?
-
- Beiträge: 59
- Registriert: Fr 2. Nov 2012, 19:44
Re: Frage zu meinem Lazarus Programm
ich dich auch <3theo hat geschrieben:http://lmddgtfy.net/?q=TStringList%20freepascalHave a nice Day hat geschrieben: wo kann ich den die Stringlist finden?
ich hab alles durchsucht bei den Komponenten und deswegen hab ich gefragt...
Code: Alles auswählen
procedure TForm1.Listbox(s:string);
var
py:integer;
NewPanel:TPanel;
NewImage:TImage;
NewLabel:TLabel;
begin
py := 0;
if Scrollbox1.ComponentCount < strtoint(Stringgrid2.Cells[1,0]) then
begin
py := strtoint(Label3.caption);
NewPanel:=TPanel.Create(ScrollBox1);
NewPanel.Parent:=ScrollBox1;
NewPanel.Left:=0;
NewPanel.Top:=py;
NewImage:=TImage.Create(NewPanel);
NewImage.Picture.LoadFromFile('./source/other/Leiste.jpg');
NewImage.Width := 160;
NewImage.Height := 27;
NewImage.Parent:=NewPanel;
NewImage.Left:=1;
NewImage.Top:=0;
NewImage.Hint:= s;
NewImage.Cursor:=crHandPoint;
NewImage.ShowHint:=False;
NewImage.OnClick:=@ImageClick;
NewLabel:=TLabel.Create(NewPanel);
NewLabel.Parent:=NewPanel;
NewLabel.OnClick:=@ImageClick;
NewLabel.Cursor:=crHandPoint;
NewLabel.Hint:= s;
NewLabel.AutoSize:=False;
NewLabel.Caption:= 'Lösung ' + Stringgrid2.Cells[1,0];
NewLabel.Left:=4;
NewLabel.Top:= 1;
NewLabel.Width:=NewImage.Width;
NewLabel.Font.size := 12;
NewLabel.Height:=24;
NewPanel.BorderStyle := bsNone;
NewPanel.Width:=152;
NewPanel.Height:=27;
py:=py+NewPanel.Height;
Label3.caption := inttostr(py);
end;
end;
nun will ich wenn @ImageClick ausgelöst wird ... diesen Hint and ImageClick übermitteln ... wie machen ich das?
2. Wenn ich einen String habe... kann ich dann irgendwie jedes einzelne Zeichen durchgehen lassen...
Wie nie for i := x to y schleife... blos halt durch die Zeichen durch ... for i := Zeichen1 to ZeichenLast
Re: Frage zu meinem Lazarus Programm
Und ich habe dir nur gezeigt, wie du diese Information finden kannst.Have a nice Day hat geschrieben: ich dich auch <3
ich hab alles durchsucht bei den Komponenten und deswegen hab ich gefragt...
TStringList ist keine Komponente und deshalb auch nicht in der Palette sichtbar.
Have a nice Day hat geschrieben: 1. Ich habe nun im Label.Hint einen String gespeichert...
nun will ich wenn @ImageClick ausgelöst wird ... diesen Hint and ImageClick übermitteln ... wie machen ich das?
Bei deinem Eventhandler ImageClick bekommst du einen Parameter "Sender" mit. Dieser "enthält" das Objekt, welches das Ereignis ausgelöst hat. Durch Typecasting kannst du darauf zugreifen.
z.B. TImage(Sender).Hint enthält den geuschten String.
Das gehört eigentlich in die Schule unter "Pascal Grundlagen".Have a nice Day hat geschrieben: 2. Wenn ich einen String habe... kann ich dann irgendwie jedes einzelne Zeichen durchgehen lassen...
Wie nie for i := x to y schleife... blos halt durch die Zeichen durch ... for i := Zeichen1 to ZeichenLast
Kurz gesagt, enthält MeinString den "Buchstaben" (Char) an der Position i.
Die Länge des Strings erhältst du mit Length(MeinString). Der erste Buchstaben ist bei 1.