Label/StaticText "sperren"

Rund um die LCL und andere Komponenten
Antworten
Bert
Beiträge: 6
Registriert: Fr 22. Mär 2013, 10:46

Label/StaticText "sperren"

Beitrag von Bert »

Hi Leute,
Ich bin momentan daran, das Spiel Pokémon mit Lazarus zu programmieren. Dabei ist im Kampfmodus das Label (in meinem fall StaticText, da es vor den Buttons ein muss), welches die Informationen an den Spieler weitergibt sehr wichtig (z.B. dein Gegner setzt XY ein/das ist sehr effektiv usw.).

Beim programmieren bekam ich das Problem, dass ich dieses Label mit mehreren Informationen füttern muss. Als Zwischenlösung habe ich es so konfiguriert, dass das Label erst verschwindet, wenn man darauf klickt. Das Problem ist nun, dass viele Informationen aufeinander folgen, wodurch die zuvor in das Label geschriebenen informationen sehr schnell durch neue ersetzt werden.

Ich möchte also nun erreichen, dass erst neue Informationen (durch die Funktion

Code: Alles auswählen

Form1.label.caption := 'XY';
) in das Label geschrieben werden können, wenn darauf geklickt wurde.
Somit soll es quasi vor der Caption Funktion gesperrt sein und erst bei einem Klick wieder freigegeben werden. :?

Ich hoffe ihr findet eine Lösung für mein Problem ...

Danke!

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Label/StaticText "sperren"

Beitrag von Komoluna »

Hallo Bert

ich würde das so machen:

Code: Alles auswählen

 
var
  str: TStringList;
  Labelindex: Integer;
 
[...]
 
implementation
Procedure Form1.Label1Click(Sender: TObject);
begin
  Inc(LabelIndex,1);
  if str.Count<1 then exit;
  Form1.Label1.Caption:=str.Strings[LabelIndex];
end;
 
Procedure Form1.BlaBlaBla;
begin
  str.Add('Bla Bla Bla...');
  str.Add('Dat wa sea efektüf!!!');//XD
end;
 
MFG Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Label/StaticText "sperren"

Beitrag von Euklid »

Hallo Bert,

alternativ oder ergänzend könntest Du das Problem auch mit der Ttimer-Komponente lösen, indem Du mithilfe des Ansatzes von Komoluna z.B. alle 5 Sekunden das Label aktualisierst. Dadurch würde genug Zeit zum Lesen bleiben und der Spieler erspart sich den Klick aus Label.

Viele Grüße, Euklid

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Label/StaticText "sperren"

Beitrag von MmVisual »

Besser so:

Code: Alles auswählen

var
  str: TStringList;
 
[...]
 
implementation
Procedure Form1.Label1Click(Sender: TObject);
begin
  if str.Count >= 1 then
  Begin
    Form1.Label1.Caption:=str[0];
    str.Delete(0);
  End;
end;
 
Procedure Form1.BlaBlaBla;
begin
  str.Add('Bla Bla Bla...');
  str.Add('Dat wa sea efektüf!!!');//XD
end;
EleLa - Elektronik Lagerverwaltung - www.elela.de

Bert
Beiträge: 6
Registriert: Fr 22. Mär 2013, 10:46

Re: Label/StaticText "sperren"

Beitrag von Bert »

Danke für die Antworten! Auf die Methode mit dem Timer bin ich auch schon gekommen, jedoch muss ich zugeben, dass ich irgendwie nicht mit Timern klar komme :D

Bei der 2. Methode kommt es zu einem Error:
"Projekt Pokémon hat Exception-Klasse >>External: SIGSEGV << ausgelöst.

In Datei 'kampfmodus.pas' in Zeile 439:
str.Add('XY')


meine LabelClick Prozedur sieht so aus:

Code: Alles auswählen

procedure TForm2.InfoClick(Sender: TObject);
begin
  if str.Count >= 1 then
  Begin
    info.Caption:=str[0];
    str.Delete(0);
  End;
  Info.Visible := False;
  zeigeOptionen;
end;          
wobei zeigeOptionen lediglich die unsichtbar gemachten buttons wieder sichtbar macht.

//EDIT: Habe vergessen, die strlist zu createn! :oops:
Nun habe ich das Problem, dass nicht immer der richtige Text präsentiert wird. D.h. wenn ich erst Tackle drücke und danach Härtner, dann wird trotzdem Tackle angezeigt; drücke ich nochmal Härtner, dann funktioniert es.
Zuletzt geändert von Bert am Di 2. Apr 2013, 10:47, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Re: Label/StaticText "sperren"

Beitrag von theo »

Sieht eher so aus, als hättest du die Stringlist "str" nicht created.

Bert
Beiträge: 6
Registriert: Fr 22. Mär 2013, 10:46

Re: Label/StaticText "sperren"

Beitrag von Bert »

theo hat geschrieben:Sieht eher so aus, als hättest du die Stringlist "str" nicht created.
so war es, jedoch schau mal kurz auf meinen letzten EDIT .

Antworten