Dobrý den jsem Začátečník s Delphi
Zdravím potřeboval bych poradit s programem. Pro tento problém jsem vytvořil testovací program obsahující jeden obrázek a jeden label.
Na formuláři je obrázek, labelem kontroluji výstup, mám použito jednoduché zapnuto x vypnuto. Potřebuji abych když zmáčknu tlačítko myši nad formulářem(tedy procedura formdown) a následně se zmáčklým tlačítkem myši pohybuji po obrazovce, aby se při "najetí" nad obrázek zaktivovala procedura picturemove....tedy z prodedury formmove na picturemove. Změnu z jedné procedury na druhou kontroluji výše zmíněným výstupem vypnuto x zapnuto. Zdrojový kod testovacího programu mám níže zkopírovaný.
V praxi toto potřebuji protože v mém programu mám možnost volby zbraně kulomet a tedy když začnu střílet mimo terč(form) chci aby když při stálé střelbě najedu nad (obrázek)terč , aby se aktivoval prodedura onpicturemove kde se mi pak následně ubírjaí životy.
Zkoušel jsem něco podobného udělat bez nutnosti zmáčnutí tlačítka a nebyl problém, procedury se při přejetí z form na picture měnily podle plánu, když je ale v podmínce, že přitom musí být zmáčknutá myš nenašel jsem ve svých znalostech nic abych tento problém vyřešil.
toto je zkopírovaný celý zdrojový kod testovacího programu...na formulář akorát dáte nějaký obrázek a label aby to fungovalo.. Moc děkuji za pomoc již nevím za kým bych se obrátil, než jsem našel toto forum.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg;
type
TForm1 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
naboje:integer;
snizeni:integer;
mousedown:boolean;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if mousedown=true THEN begin
label2.caption:='vypnuto';
end;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if mousedown=true THEN begin
label2.caption:='zapnuto'
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
mousedown:=false;
naboje:=2000;
snizeni:=1;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mousedown:=true;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mousedown:=true;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mousedown:=false;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mousedown:=false;
end;
end.
Fórum › Delphi
Změna procedur
To liborb :
joj..jsem začátečník v delphi..... nemohl by jsi zde prosím trochu více rozepsat jak to myslíš? děkuji mnohokrát :D
ještě jednou zde můj problém :
na formu je obrázek-vyplněné jsou procedury picturemove a formmove....při "přejezdu" z formu nad obrázek se procedura změní...to jsem si ozkoušel a ověřil právě výstupem labelu(vyp x zap)
- ovšem když je v podmínce že při tom musím být aktivní procedura picture/form down....tedy že zmáčkneme myš nefunguje to. (snažím se simulovat kulomet tj zmáčknu a furt se střílí....jedinný problém je zde ten že když se mi nezmění procedury z formmove na picturemove tak tím pádem když střílím do obrázku nic se neděje)
Prosím nápady trošičku rozvést abych to pochopil a zvládl....jedná se o maturitní program, který mám téměř hotový až na tento zákeřný problém.
popřípadě mail ivo.vanak@email.cz můžu přeposlat celý svůj maturitní program...ještě jednou moc díky za odpovědi a za pomoc všem
Tak problém není v D&D, ale v tom, že si hlavní okno/image (podle toho, do kterého se klikne) provede SetCapture, takže jsou zprávy od myši posílány do tohoto okna. Jednoduché řešení je tedy dát do OnMouseDown procedur ReleaseCapture:
begin
mousedown:=true;
ReleaseCapture();
end;
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Zoznam ulozenych procedur — založil Anonym
Spúšťanie procedúr medzi 2 zošitmi a vyladenie kódu (VBA) — založil stanleyvox
PHP - změna hesla - nefukční změna / login — založil David
Změna IP — založil don_Dominique
Zmena panelov — založil tomas3333