Autor Beitrag
Tanrek
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Fr 15.07.05 19:53 
also... ich habe keinen besseren titel gefunden... desswegen bitte nicht böse sein, wenn mein problem nicht zu 100% zutrifft.

ich habe ein image (image1) mit einem MouseOver-befehl ausgestattet... dies geschieht anhand dieses codes:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
unit Unit1;  

 
interface  

 
uses  
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  Dialogs, StdCtrls, ExtCtrls;  

 
type  
  TMyImg = class(TImage)  
  private  
    procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;  
    procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;  
  end;  
 
  TForm1 = class(TForm)  
    Button1: TButton;  
    Image1: TImage;  
    procedure FormCreate(Sender: TObject);  
    procedure FormDestroy(Sender: TObject);  
  private  
    { Private-Deklarationen }  
    MyImg: TMyImg;  
  public  
    { Public-Deklarationen }  
  end;  

var  
  Form1: TForm1;  

implementation  

{$R *.dfm}              

procedure TMyImg.CMMouseEnter(var Msg: TMessage);  
begin  
  inherited;  
  Form1.Top := 0;
  Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'BMP1.bmp');  
end;  

procedure TMyImg.CMMouseLeave(var Msg: TMessage);  
begin  
  inherited
  Form1.Top := -150
  Picture.LoadFromFile( ExtractFilePath(ParamStr(0)) + 'BMP2.bmp');  
end;  

procedure TForm1.FormCreate(Sender: TObject);  
begin  
  MyImg := TMyImg.Create(Self);  
  MyImg.Parent := Self;  
  MyImg.Left := 10;  
  MyImg.Top := 10;  
end;  

procedure TForm1.FormDestroy(Sender: TObject);  
begin  
  MyImg.Free;  
end;  

end.


kurze erklärung: wenn ich mit der maus über das bild gehe, ändert sich das bild und die position meiner form

bis dahin ist auch noch alles ok. das prog macht auch alles so, wies soll. ich habe auf meiner Form nun aber einen Button. das problem ist bloß, wenn ich mit der maus über den button geh, verlasse ich "indirekt" das bild (obwohl der button auf dem bild liegt) und somit ändert das programm die position meiner Form... und dann kann man den button ja schlecht drücken :(
hat da jemand vielleicht ne idee, wie ich das übgehen könnte...
ach ja... mit nem Timer währe es auch schlecht :cry:

mfg
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 15.07.05 20:17 
mach halt auch eine onmouseover prozedur für den button
btw. das dauernde laden eines bildes von der festplatte ist ziemlich langsam, lade das lieber aus dem speicher (bild als resource einbinden und mit loadfromresourcestring laden)

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Tanrek Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Fr 15.07.05 20:40 
das mit der prozedur für den button machen ist etwast... na wie soll ich sagen schlecht...
ok, war mein fehler, da ich das net gesagt hab... ich habe 8 buttons, 1 listview und 3 labels... und dafür überall ne prozedur zu schrieben währe zu umständlich :?
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Fr 15.07.05 22:30 
Stichwort: Suche in: Delphi-Forum, Delphi-Library SENDER
Alle Buttons kriegen die gleiche Routine. In der Routine kannst du dann jedoch mit (Sender as TButton) genau den Button ansprechen, der die Aktion ausgelöst hat (schlecht formuliert). Auf die Art, kannst du dir eine Menge Code sparen ;)

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Tanrek Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Sa 16.07.05 11:40 
hmmm... jo, das währe auch gegangen...
ich hab das jetzt so gelöst:
ich habe um das bild ein nicht sichtbares bild gelegt, dass den mouseenterffekt hat. aber nicht den mouseleave. ändert sich nun die position der form ist es egal.
ich weiß... ist etwas blöde gelöst, aber es funktioniert :wink:

danke nochmal an alle, die mir geholfen haben!

mfg tanrek