Popup, allerdings ohne neues Form möglich?
Popup, allerdings ohne neues Form möglich?
Hallo zusammen,
ich würde gerne folgende Aufgabenstellung lösen:
Wenn ich mit der Maus über ein TPanel komme, soll ein Bild (png-Format) aufpoppen. Sobald ich das TPanel verlasse, soll das Bild verschwinden. Ich habe auf einer Seite 23 Panels und für jedes Panel soll ein anderes Bild aufpoppen.
Es gäbe ja die Möglichkeit mit einen neuen Form aber dann hätte ich 23 Forms und dann wird das ziemlich unübersichtlich....
Hat jemand eine Idee?
Ich danke Euch!
McReier
ich würde gerne folgende Aufgabenstellung lösen:
Wenn ich mit der Maus über ein TPanel komme, soll ein Bild (png-Format) aufpoppen. Sobald ich das TPanel verlasse, soll das Bild verschwinden. Ich habe auf einer Seite 23 Panels und für jedes Panel soll ein anderes Bild aufpoppen.
Es gäbe ja die Möglichkeit mit einen neuen Form aber dann hätte ich 23 Forms und dann wird das ziemlich unübersichtlich....
Hat jemand eine Idee?
Ich danke Euch!
McReier
Re: Popup, allerdings ohne neues Form möglich?
Nimm eine einzige Form und lade das entsprechende Bild vor dem "aufpoppen".
Re: Popup, allerdings ohne neues Form möglich?
Super Idee und eigentlich auch logisch aber das Popup muss ich dann "manuell" (per Klick) schließen.theo hat geschrieben:Nimm eine einzige Form und lade das entsprechende Bild vor dem "aufpoppen".
Der Ablauf soll folgendermaßen stattfinden:
Beim "berühren" des Panel soll das Bild aufgehen und in den Vordergrund kommen. Sobald ich das Panel verlasse, soll das Bild automatisch verschwinden.
Re: Popup, allerdings ohne neues Form möglich?
TPanel hat doch 2 Ereignisse, onMouseEnter und onMouseLeave, die kann man doch super dafür verwenden.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Popup, allerdings ohne neues Form möglich?
Hi Michl,Michl hat geschrieben:TPanel hat doch 2 Ereignisse, onMouseEnter und onMouseLeave, die kann man doch super dafür verwenden.
genau, so funktionierts. Schaut super aus

Nur an der IF then else vom Form3 scheiterts noch. Irgendwie passt diese Bedingung nicht. Könnt Ihr den Fehler erkennen

Anbei auch noch der Quelltext:
Code: Alles auswählen
unit Unit3;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm3 }
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form3: TForm3;
pfad1, pfad2: String;
implementation
uses unit1;
{$R *.lfm}
{ TForm3 }
begin
if form1.Panel47MouseEnter=true THEN;
pfad1:='C:\Eigene Dateien\Programme Lazarus\Bilder\s1.png';
Image1.Picture.LoadFromFile(Pfad);
else
if form1.Panel48MouseEnter=true THEN;
pfad2:='C:\Eigene Dateien\Programme Lazarus\Bilder\s2.png';
Image1.Picture.LoadFromFile(Pfad2);
else close;
end.
Re: Popup, allerdings ohne neues Form möglich?
Hmm... nach einem "then" ein Semikolon... sieht aber sehr verdächtig aus...
schau mal hier oder suche mal nach dem Wort "Semikolon" hier
wahrscheinlich wolltest du das eher so:
schau mal hier oder suche mal nach dem Wort "Semikolon" hier
wahrscheinlich wolltest du das eher so:
Code: Alles auswählen
if form1.Panel47MouseEnter then begin // = true kann man weglassen!
pfad1:='C:\Eigene Dateien\Programme Lazarus\Bilder\s1.png';
Image1.Picture.LoadFromFile(Pfad);
end else
...
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Popup, allerdings ohne neues Form möglich?
Leider hat er noch immer ein Problem mit demMichl hat geschrieben: wahrscheinlich wolltest du das eher so:Code: Alles auswählen
if form1.Panel47MouseEnter then begin // = true kann man weglassen! pfad1:='C:\Eigene Dateien\Programme Lazarus\Bilder\s1.png'; Image1.Picture.LoadFromFile(Pfad); end else ...
Code: Alles auswählen
if form1.Panel47MouseEnter then begin
unit3.pas(36,30) Error: Wrong number of parameters specified for call to "Panel47MouseEnter"
unit1.pas(417,18) Hint: Found declaration: TForm1.Panel47MouseEnter(TObject);
Danke für Eure Geduld und Eure schnellen Antworten!!
Re: Popup, allerdings ohne neues Form möglich?
Soweit habe ich gar nicht gedacht
, und dachte du hättest dir eine eigene Function gebaut und es wäre nur ein Codeausschnitt...aber wenn man genauer hinguckt, kann man´s ja sehen...
Du kannst nicht so einfach ein Ereignis mit if "Ereignis" abfragen sondern eher so:
- per Maus im Objektinspektor -> Panel auswählen
- unter Ereignisse onMouseEnter auf das "..." - Button klicken
- dann wird eine Procedure für dein Ereignis generiert sowas- darin kannst du jetzt den Code deiner if - Anweisung unterbringen z.B. so
Das Ganze könnte man auch erst zur Laufzeit verlinken, ist so aber erst mal verständlicher!

Du kannst nicht so einfach ein Ereignis mit if "Ereignis" abfragen sondern eher so:
- per Maus im Objektinspektor -> Panel auswählen
- unter Ereignisse onMouseEnter auf das "..." - Button klicken
- dann wird eine Procedure für dein Ereignis generiert sowas
Code: Alles auswählen
procedure TForm1.Panel1MouseEnter(Sender: TObject);
begin
end;
Code: Alles auswählen
procedure TForm1.Panel1MouseEnter(Sender: TObject);
begin
Image1.Picture.LoadFromFile('C:\Eigene Dateien\Programme Lazarus\Bilder\s1.png');
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Popup, allerdings ohne neues Form möglich?
Danke für Eure guten Vorschläge, habe das Thema nun doch mit separaten Forms gelöst. Diese blende ich aus (Seite schließen im Quelleditor) und damit bleibt das Ganze (für mich) noch einigermaßen nachvollziehbar.
Danke für die guten Hinweise (vor allem der von Michl mit "onMouseLeave"....)
Danke für die guten Hinweise (vor allem der von Michl mit "onMouseLeave"....)

-
- Beiträge: 61
- Registriert: So 21. Aug 2011, 20:37
- OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
- CPU-Target: xxBit
Re: Popup, allerdings ohne neues Form möglich?
Hallo!
Danke auch von mir!
Gruß!
idefix
Danke auch von mir!
Gruß!
idefix