Hilfe bei Labelausgabe

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Clemensch
Beiträge: 10
Registriert: Do 11. Feb 2021, 01:03

Hilfe bei Labelausgabe

Beitrag von Clemensch »

Hallo Freunde!

Ich arbeite gerade daran ein Label zu erstellen, welches von mehreren SpinEdit-Feldern die Ausgaben angibt. Hierbei ist mir ein Fehler unterlaufen, für welchen ich einfach keine Lösung finde.
Hier ist der Quellcode:
begin
Zahl1:=SpinEdit1.value;
Merke:=Label1.caption;
Label1.caption:=Merke + H + IntToStr(Zahl1);
Merke:='';




end;

procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
Zahl2:=SpinEdit2.value;
Merke:=Label1.caption;
Label1.caption:=Merke + 'F' + IntToStr(Zahl2);
Merke:='';
end;
end.


Hierbei entsteht bei dem mehrmaligen anklickens des z.B. SpinEdit1-Feldes das Problem, dass anstatt ein "H" mit der korrespondierenden Zahl mehrere "H"s stehen H1H2H3H4H5 usw.
Habt ihr für dieses Problem eine Lösung? :D

wennerer
Beiträge: 271
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon, Lazarus Stable 2.0.10 r63673M FPC 3.2.0
CPU-Target: x86_64-linux-gtk2

Re: Hilfe bei Labelausgabe

Beitrag von wennerer »

Hi Clemensch,
du musst die Caption erst leeren. Zum Beispiel so

Code: Alles auswählen

Label1.Caption:='';

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Spin, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Label1: TLabel;
    SpinEdit1: TSpinEdit;
    procedure SpinEdit1Change(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.SpinEdit1Change(Sender: TObject);
var zahl2 : integer;
    merke : string;
begin
 Label1.Caption:='';
 Zahl2:=SpinEdit1.value;
 Merke:=Label1.caption;
 Label1.caption:=Merke + 'F' + IntToStr(Zahl2);
 Merke:='';
end;

end.
Dateianhänge
project1.zip
(126.14 KiB) 8-mal heruntergeladen

Clemensch
Beiträge: 10
Registriert: Do 11. Feb 2021, 01:03

Re: Hilfe bei Labelausgabe

Beitrag von Clemensch »

Dankeschön :D
Das Problem was ich jedoch habe ist,dass ich die Ergebnisse der beiden SpinEdit-Felder in einem Label-Feld zusammen, hintereinander schreiben möchte aka z.B. H1F4 H2F1 usw.
Gäbe es dafür einen Lösungsweg?

wennerer
Beiträge: 271
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon, Lazarus Stable 2.0.10 r63673M FPC 3.2.0
CPU-Target: x86_64-linux-gtk2

Re: Hilfe bei Labelausgabe

Beitrag von wennerer »

Hi,
meist du so was:

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Spin, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Label1: TLabel;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    procedure SpinEdit1Change(Sender: TObject);
    procedure SpinEdit2Change(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
Label1.caption:='H' + inttostr(SpinEdit1.Value)+ 'F' + inttostr(SpinEdit2.Value);
end;

procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
 Label1.caption:='H' + inttostr(SpinEdit1.Value)+ 'F' + inttostr(SpinEdit2.Value);
end;

end.
Gruß
Bernd

Clemensch
Beiträge: 10
Registriert: Do 11. Feb 2021, 01:03

Re: Hilfe bei Labelausgabe

Beitrag von Clemensch »

Das ist genau das nachdem ich gesucht habe! Vielen Dank Bernd :mrgreen:

Gruß
Clemens

Sieben
Beiträge: 106
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: i386

Re: Hilfe bei Labelausgabe

Beitrag von Sieben »

Dann kann man aber auch gleich beide SpinEdits in ein und denselben Handler hängen. :wink:

Clemensch
Beiträge: 10
Registriert: Do 11. Feb 2021, 01:03

Re: Hilfe bei Labelausgabe

Beitrag von Clemensch »

Hi! Wie kann ich das implementieren? Ich bin noch nicht geübt in Lazarus :lol:

wennerer
Beiträge: 271
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon, Lazarus Stable 2.0.10 r63673M FPC 3.2.0
CPU-Target: x86_64-linux-gtk2

Re: Hilfe bei Labelausgabe

Beitrag von wennerer »

Hi Clemens,

gibt wie immer mehrere Möglichkeiten. Gehe im Objekt Inspektor bei Spinedit2 auf Ereignisse. Dort trägst du das OnChange-Event für das SpinEdit1 ein. So landen beide Change-Events in der gleichen Procedure.
Spinedit1.png
Spinedit1.png (25.74 KiB) 203 mal betrachtet

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Spin, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Label1: TLabel;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    procedure SpinEdit1Change(Sender: TObject);
   // procedure SpinEdit2Change(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
Label1.caption:='H' + inttostr(SpinEdit1.Value)+ 'F' + inttostr(SpinEdit2.Value);
end;
{
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
 Label1.caption:='H' + inttostr(SpinEdit1.Value)+ 'F' + inttostr(SpinEdit2.Value);
end;
     }
end.
Gruß
Bernd

Antworten