Ich habe mich gerade neu angemeldet, da ich erst seid 7 Tagen lazarus verwende. Da ich schon ein älteres Semester bin, habe ich nur Erfahrung mit schon längst vergessenen Programmiersprachen ( Visual Basic, PHP,..). Leider habe ich noch keinerlei Erfahrung mit Lazarus oder Pascal.
Nun zu meinen Anfängerproblem.
Ich habe versucht auf eine Form ein Panel zu zeichnen. Darauf zeichne ich mit Canvas eine Linie. Über dieser Linie habe ich ein Label plaziert. nun möchte ich, wenn ich mit der Maus darauf komme, ein Panel aktivieren. Dies funktioniert alles. Beim Verlassen des Labels mit der Maus sollte das Panel wieder ausgeschaltet werden, uch das funktioniert. Jedoch wird mir jetzt die Linie (Canvas) gelöscht und nicht mehr angezeigt.
Nun habe ich ein bißchen gegoogelt und die Befehle Invalidate, Repaint, Update funktionieren bei mir nicht. Sie zeichnen zwar das Panel neu aber die Linie nicht.
Hier noch mein Code
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
InfoPanelGleisLabelInfo: TLabel;
Panel1: TPanel;
InfoPanelGleis: TPanel;
procedure Button1Click(Sender: TObject);
procedure BezeichnungsLabelMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
procedure BezeichnungsLabelMouseLeave(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
BezeichnungsLabel: TLabel;
begin
Panel1.Visible:=true;
Panel1.Canvas.Pen.Color:=clred; // Linie Rot
Panel1.Canvas.Pen.Width:=5; //Größe der Linie
Panel1.Canvas.Line(5,5,200,100);
Panel1.Canvas.Line(10,10,10,30);
BezeichnungsLabel:= TLabel.Create(self);
BezeichnungsLabel.name :='Name';
BezeichnungsLabel.caption := 'Caption';
BezeichnungsLabel.left := 12;
BezeichnungsLabel.top:= 8;
BezeichnungsLabel.AutoSize:=true;
BezeichnungsLabel.Color := clWhite;
BezeichnungsLabel.visible := true;
Bezeichnungslabel.OnMouseMove:=@BezeichnungsLabelMouseMove;
Bezeichnungslabel.OnMouseLeave:=@BezeichnungsLabelMouseLeave;
BezeichnungsLabel.parent := Panel1;
end;
procedure TForm1.BezeichnungsLabelMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
begin
if Sender is TLabel then
begin
//InfoPanel Gleis
InfoPanelGleisLabelInfo.Caption:='testlabel';
InfoPanelGleis.Visible:=true;
InfoPanelGleis.Left:= 12;
InfoPanelGleis.Top:= 8;
end;
end;
end;
procedure TForm1.BezeichnungsLabelMouseLeave(Sender: TObject);
begin
InfoPanelGleis.Visible:=false;
form1.panel1.u
end;
end.