Popup, allerdings ohne neues Form möglich?

Für Fragen rund um die Ide und zum Debugger
Antworten
McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Popup, allerdings ohne neues Form möglich?

Beitrag von McReier »

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

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

Re: Popup, allerdings ohne neues Form möglich?

Beitrag von theo »

Nimm eine einzige Form und lade das entsprechende Bild vor dem "aufpoppen".

McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Re: Popup, allerdings ohne neues Form möglich?

Beitrag von McReier »

theo hat geschrieben:Nimm eine einzige Form und lade das entsprechende Bild vor dem "aufpoppen".
Super Idee und eigentlich auch logisch aber das Popup muss ich dann "manuell" (per Klick) schließen.
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.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Popup, allerdings ohne neues Form möglich?

Beitrag von Michl »

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;  

McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Re: Popup, allerdings ohne neues Form möglich?

Beitrag von McReier »

Michl hat geschrieben:TPanel hat doch 2 Ereignisse, onMouseEnter und onMouseLeave, die kann man doch super dafür verwenden.
Hi Michl,
genau, so funktionierts. Schaut super aus :D

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.       
Danke!! McReier

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Popup, allerdings ohne neues Form möglich?

Beitrag von Michl »

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:

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;  

McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Re: Popup, allerdings ohne neues Form möglich?

Beitrag von McReier »

Michl 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
  ...  
Leider hat er noch immer ein Problem mit dem

Code: Alles auswählen

if form1.Panel47MouseEnter then begin
Der Fehler dazu lautet:
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!!

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Popup, allerdings ohne neues Form möglich?

Beitrag von Michl »

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

Code: Alles auswählen

procedure TForm1.Panel1MouseEnter(Sender: TObject);
begin
 
end;
- darin kannst du jetzt den Code deiner if - Anweisung unterbringen z.B. so

Code: Alles auswählen

procedure TForm1.Panel1MouseEnter(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('C:\Eigene Dateien\Programme Lazarus\Bilder\s1.png');
end;
Das Ganze könnte man auch erst zur Laufzeit verlinken, ist so aber erst mal verständlicher!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Re: Popup, allerdings ohne neues Form möglich?

Beitrag von McReier »

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"....) :D

idefix
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?

Beitrag von idefix »

Hallo!

Danke auch von mir!

Gruß!
idefix

Antworten