Lazarus 2.0.8 (2020.04.16.)
Letöltés

question-circle Egy kezdő Lazarus használó kérdései

  • mikiR2
  • mikiR2 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 9
  • Köszönetek: 0

mikiR2 válaszolt a témára: Egy kezdő Lazarus használó kérdései

Már megoldottam.


Sziasztok.

Egy kis segítségre lenne szükségem.

Az alábbi hiba üzenet jelenik meg : external sigsegv amikor lefordítom vagy ha futtatom az exe-t.

Van egy Form1 -em ami indításkor elvan rejtve és a formcreate eseményénél van egy form2.visible := true;

Tudnátok egy kis segítséget adni hogy hogyan kellene meg valósítanom hogy ne kapjak hiba üzenetet.
#1865

  • mikiR2
  • mikiR2 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 9
  • Köszönetek: 0

mikiR2 válaszolt a témára: Egy kezdő Lazarus használó kérdései

Köszönöm a segítséget megoldottam.
procedure TForm1.Button1Click(Sender: TObject);
var
   Http: TFPHTTPClient;
begin
  Http := TFPHTTPClient.Create(nil);
 
  try
     Memo1.Text:= Http.Get('http://webcim.hu/teszt.txt');
  finally
    Http.Free;
  end;
 
end;
#1852

  • mikiR2
  • mikiR2 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 9
  • Köszönetek: 0

mikiR2 válaszolt a témára: Egy kezdő Lazarus használó kérdései

Csak úgy megjegyzés: egy weblap az nem egy fájl...


Nem weblapot hanem a szerveren elhelyezett szöveges fájt szeretném letölteni.
#1851

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

A TFPHttpClient.Get() a megcélzott fájl tartalmát adja vissza (karakterláncként), ami az előbbi példakódban az S változóba kerül, amint azt te is láthatod. Az így kapott karakterlánccal azt teszel amit csak akarsz, az S helyett akár egy TMemo.Text-ben is elhelyezheted.
A kapott karakterlánc azonnali fájlba írásához a .Get() metódus egy másik változatát használd:
C.Get(ParamStr(1), 'HelyiFajlNeve');

Egy fájlt szeretnék letölteni egy webszerverről

Csak úgy megjegyzés: egy weblap az nem egy fájl...
#1850

  • mikiR2
  • mikiR2 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 9
  • Köszönetek: 0

mikiR2 válaszolt a témára: Egy kezdő Lazarus használó kérdései

Nem feltétlenül szükséges a komponens ha van alapból akkor nekem az is jó.
Esetleg ehhez a kód hoz ha tudnál nekem még egy kis segítség adni azt meg köszönném.
Hogy hogy tudnám ezt a kódot grafikus módból használni és nem parancssorból.

És nem láttam a kódban hogy hol lehet meg adni a mentési nevet és útvonalat.
#1849

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

Amennyiben mindenképpen komponensek használatával szeretnéd megvalósítani a dolgot: Indy, LNet, Synapse, de az FPC tartalmaz a HTTP protokolhoz (is) unito=kat, például: fphttpclient , fphttpserver, httpdefs
A következő egy minimalista példaprogram (hibakezelés nélkül), melyet fordítás után a parancssorból futtathatsz:
{$MODE OBJFPC}{$H+}
uses fphttpclient,sysutils;
var
	C:TFPHttpClient;
	S:string;
begin
	C:=TFPHttpClient.Create(Nil);
	WriteLn('Webcím: ',ParamStr(1));
	C.AddHeader('User-Agent','Mozilla/5.0 (compatible; fpweb)');
	S:=C.Get(ParamStr(1));
	for I:=0 to C.ResponseHeaders.Count-1 do Writeln(C.ResponseHeaders[I]);
	if S<>'' then Writeln(S);
	C.Free;
end.
Paraméterként a megcélzott webcímet kell megadni.
Érdemes lehet alaposabban körülnézni a wiki Networking kategóriájában.
#1848

  • mikiR2
  • mikiR2 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 9
  • Köszönetek: 0

mikiR2 válaszolt a témára: Egy kezdő Lazarus használó kérdései

Sziasztok

Egy kis segítségre lenne szükségem.

Egy fájlt szeretnék letölteni egy webszerverről és nem igazán találtam hogy hogyan kellene megvalósítani.
Esetleg van valami komponens a lazarus -ban?
És ha esetleg tudnátok nekem valami minta kódot adni azt megköszönném.
#1847

  • mikiR2
  • mikiR2 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 9
  • Köszönetek: 0

mikiR2 válaszolt a témára: Egy kezdő Lazarus használó kérdései

Köszönöm a segítséget de valamiért nem megy de még próbálkozom.
#1752

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

Ha volt a Lazarus telepítése előtt FPC telepítve a gépedre és az a PATH környezeti változóban szereplő könyvtárak egyikében található akkor az (is) okozhat gondot. Ha nem akkor telepítsd újra a Lazarus-t.
Korábban kijavítottam a telepítés mikéntjére vonatkozó tanácsomat (ahogy látom valószínűleg egyszerre gépeltünk akkor), de email-ben csak az eredetit kaptad meg. (Lásd lentebb) A javított változat alapján telepítsd a Lazarus-t.
:( Sorry...

Ha gondolod újratelepítés előtt a Lazarus beállítási fájljait is törölheted a "c:/users/felhasználó/Local Settings/Application Data/lazarus/" könyvtárból (vagy valami hasonló, nincs előttem win), hogy biztosan kiszűrd a hibákat.
#1751
Megköszönték: mikiR2

  • mikiR2
  • mikiR2 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 9
  • Köszönetek: 0

mikiR2 válaszolt a témára: Egy kezdő Lazarus használó kérdései

Beállítottam a leírás alapján.


és amikor az OK -ra kattintok az alábbi üzenet jelenik meg.


Az OK -ra kattintottan.

És amikor leszeretném fordítottan az alábbi hiba üzenetet kapom.

#1750
Mellékletek:

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

A menüből indulva: "Projekt / Projekt beállításai" aztán a megjelenő ablakban: "Fordító beállításai / Beállítás és cél / Cél platform / Cél OS" és kiválasztod a win32-t.
Ez a beállítás projektfüggő, tehát minden olyan projektnél el kell végezni, amelyiknek a célja eltér az FPC/Lazarus aktuális futási környezetétől...

Az itt található legördülő listák minden elképzelhető, de a gépeden (követelmények hiányában) nem feltétlenül sikeresen megcélozható lehetőséget tartalmaznak.
#1749

  • mikiR2
  • mikiR2 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 9
  • Köszönetek: 0

mikiR2 válaszolt a témára: Egy kezdő Lazarus használó kérdései

3.0.0 sorozatú FPC-t használók az is instabil?

Feltelepíttetem a 32 bitest majd a 64 bitest de hol tudnám kiválasztani hogy melyikre forduljon?
#1748

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

Szükség van a cél-rendszernek megfelelő unit-okra is a keresztfordításhoz (ez esetedben a win32 RTL, FCL, LCL összetevőket jelenti, más rendszerek esetén még sok más dolgot is).
Legegyszerűbb ha először a 32-bites Lazarus-t telepíted és csak az után a 64-bitest.
A telepítő mellett ot van a windows változatokra történő keresztfordításhoz szükséges kiegészítő állományok telepítője is...

Ha a 2.6 sorozatú FPC-vel működő változatot telepítesz akkor tudnod kell, hogy a 64-bites használatát windows-on nem javasolják a fejlesztők, mert azokban a SEH kivételek még nincsenek kezelve és az elkészített alkalmazások instabilak lehetnek.
#1747

  • mikiR2
  • mikiR2 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 9
  • Köszönetek: 0

mikiR2 válaszolt a témára: Egy kezdő Lazarus használó kérdései

Sziasztok most használom először a lazarus-t.
Telepítettem a lazarus 64-bites verzióját windows 8.1 re.

És az lenne a problémám hogy a 64 bites verzióval nem sikerült lefordítani 32 bitesre.

A 64 bites verzióval lehet fordítani 32 bitesre?
És ha igen akkor tudnátok segíteni?
#1745

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

Köszönjük, hogy megosztottad velünk a munkád gyümölcsét.
Néhány futó pillantást vetettem a forráskódra és van néhány építő jellegű javaslatom arra az esetre ha nem csak windows-on, hanem más rendszereken is szeretnéd használhatóvá/lefordíthatóvá tenni a programod:
  • Próbáld ki és használd az FPSound (vagy a PlaySoundPackage ) csomagot a hangok lejátszásához. A legtöbb esetben működni fog az alapértelmezés szerint telepített rendszerösszetevőkkel.
  • Könyvtárelválasztóként ne a \ jelet hanem a DirectorySeparator állandót használd, mely a forráskód lefordításakor minden rendszerhez a megfelelő könyvtárelválasztó jelet tartalmazza. A Unix típusú rendszereken (Linux, BSD, MacOS stb.) csak a / jel használható e célra.
  • Az ablak átméretezésekor nem kívánatos dolgok történnek. A játékteret (amit most a főablakban közvetlenül jelenítesz meg) egy közbeiktatott, állandó méretű képpel (és játéktérrel) oldd meg. Ezt aztán a StretchDraw() használatával egy az egyben átméretezve rajzolhatsz ki a főablakra... vagy ne engedd meg a főablak átméretezését, ennek egyik módja ha a .Constraints értékeit beállítod és a .BorderStyle pedig legyen például bsSingle vagy bsDialog
#1739

  • Tomi
  • Tomi profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 27
  • Köszönetek: 1

Tomi válaszolt a témára: Egy kezdő Lazarus használó kérdései

Sziasztok! Végre elkészült első (és remélhetőleg nem utolsó) játékprogramom a Lazarus-szal! :laugh: A címe: Space Defender.
Innen tölthetitek le: LETÖLTÉS
Sajnos van egy-két bug benne, amit ezidáig nem tudtam megoldani, úgyhogy ha valaki ezek megoldásában segíteni tudna, annak nagyon örülnék. A fő hiba az, hogy az ellenségek lövései néha rossz helyen jelennek meg, pedig én az ellenséges űrhajóobjektumok aktuális koordinátáira hozom őket létre, de mégis máshol bukkannak fel. A többi hiba leírását lásd a fenti letöltési oldalon.
Végül, ezúton szeretnék Gábornak köszönetet mondani a segítségeiért, amit a Lazarus-szal való ismerkedésem során nyújtott (a jóisten tartsa meg ezen szokását :) ), és Boldog Új Évet kívánni mindenkinek! :cheer:
#1738

  • Tomi
  • Tomi profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 27
  • Köszönetek: 1

Tomi válaszolt a témára: Egy kezdő Lazarus használó kérdései

Köszönöm a választ; a ClientWidth elé FoAblak-ot írva a TFoAblak helyett most már működik! Csak azt hittem, hogy a ClientWidth, Caption és társaik olyan globális változók, amelyek mindig és mindenhol elérhetőek.
De a lényeg az, hogy most már jó. :)
És ezúton szeretnék Neked és a Lazarus Magyarország honlap közösségének boldog karácsonyt kívánni!
#1732

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

Egy osztály(!) elemeit csak az adott osztály (vagy leszármazottainak) metódusaiból lehet (osztálynév előtaggal vagy a nélkül) elérni:
type
	TOsztalyTipus=class(TObject)
		Szam:Integer;
		procedure SajatValami;
	end;
 
procedure TOsztalyTipus.SajatValami;
begin
	Szam:=0;
end;
Egy (bármilyen) osztály típusú változó(!) elemeit bárhonnan elérheted, ha változónév előtaggal hivatkozol rájuk:
var
	Valtozo:TOsztalyTipus;
 
procedure KulsoValami;
begin
	Valtozo.Szam := 0;
end;
... de soha nem fog működni a következő:
type
	TOsztalyTipus=class(TObject)
		Szam:Integer;
	end;
 
procedure KulsoValami;
begin
	TOsztalyTipus.Szam := 0;
end;
#1731
Megköszönték: Tomi

  • Tomi
  • Tomi profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 27
  • Köszönetek: 1

Tomi válaszolt a témára: Egy kezdő Lazarus használó kérdései

És az miért van, hogy írtam egy saját eljárást (procedure), amit annak rendje s módja szerint előre deklaráltam az interface részben, majd kidolgoztam az implementation részben a többi fölött, működik is, de olyan változókat nem tudok benne elérni, mint pl. a ClientWidth, vagy éppen a TFoAblak.Caption, mert ha ezeket használnám, akkor a következő hibaüzenetet kapom:
unit1.pas(62,5) Error: Only class methods, class properties and class variables can be referred with class references
#1730

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

Ez a hibaüzenet arra a sorra vonatkozik ahol a deklaráció van, hiszen az nincs kidolgozva később.
Valószínűleg nem jó a kidolgozás fejléce, például lefelejtetted a kidolgozásnál az osztály-előtagot, esetleg procedure helyett function van vagy ilyesmi...
#1729
Megköszönték: Tomi

  • Tomi
  • Tomi profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 27
  • Köszönetek: 1

Tomi válaszolt a témára: Egy kezdő Lazarus használó kérdései

És ezt a hibaüzenetet miért kapom?
unit1.pas(20,15) Error: Forward declaration not solved "TFoAblak.ellensegkirakas;"
Hiszen ezt a saját eljárást ("ellensegkirakas") éppen abban a sorban deklarálom előzetesen, és aztán az implementation rész után részletesen megadom.
Akkor most rossz helyre írok valamit, vagy kihagytam valamit?
#1728

  • Tomi
  • Tomi profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 27
  • Köszönetek: 1

Tomi válaszolt a témára: Egy kezdő Lazarus használó kérdései

Köszi, már értem! Betettem a rajzolást az időzítéshez, és így már működik. Így viszont a Form-on TImage-ként eleve elhelyezett kép nem látszik, csak az elmozdulásakor, de ezt már meg tudom oldani, hogy akkor ezt is futásidőben rakom ki.
#1727

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

Az eseménykezelő eljárások csak és kizárólag valamely esemény bekövetkeztekor vagy "kényszer" hatására futnak le.

Az OnPaint eseménykezelő például akkor fut ha szükség van az adott elem kirajzolására vagy a programozó ezt közvetve vagy közvetlenül kéri: bizonyos műveletek következményeként a Paint metódus meghívásra kerül, ami az OnPaint eseménykezelő futását is előidézi.
A folyamatos frissítést csak időzítővel vagy valamilyen más ismétlődő ciklus (for/repeat) használatával érheted el (ez utóbbi módszert GUI alkalmazásokban nem javaslom).

Minden kirajzolást ugyanabban az időzített eljárásban végezz el. Természetesen az időzítést úgy kell beállítanod, hogy elég időt hagyj a rajzolási és számolási műveletek számára...
#1726

  • Tomi
  • Tomi profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 27
  • Köszönetek: 1

Tomi válaszolt a témára: Egy kezdő Lazarus használó kérdései

A főablak, tehát a TMain-nak az OnPaint-eseményében a FormPaint használható a folyamatos kirajzoláshoz? Vagy ez mire jó? Mert ott íratom ki néhány változó értékét, de nem úgy tűnik, hogy folyamatosan frissülne az értékük...
#1725

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

Canvas.Clear;
#1722
Megköszönték: Tomi

  • Tomi
  • Tomi profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 27
  • Köszönetek: 1

Tomi válaszolt a témára: Egy kezdő Lazarus használó kérdései

Az újrarajzoltatáshoz beírtam, hogy:
FoAblak.Canvas.Refresh;
De nem történik rá semmi... :-/
#1721

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

Ahhoz hogy a képernyőről is eltűnjenek a labdák az képfrissítő eljárásban újra ki kell rajzoltatnod a teljes játékteret, tehát nem csak a labdákat hanem a hátteret is.
Az objektumok megsemmisítésére használhatod a FreeAndNil() eljárást:
mbRight:
    for i:=1 to labdadb-1 do  FreeAndNil(labdatomb[i]);
... és ne felejtsd el alapra állítani a labdadb értékét.
#1720

  • Tomi
  • Tomi profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 27
  • Köszönetek: 1

Tomi válaszolt a témára: Egy kezdő Lazarus használó kérdései

Hogyan kell megsemmisíteni a létrehozott objektumo(ka)t? Most úgy csinálom, hogy egy tömbbe mentem az objektumazonosítót, majd ha nem kell, akkor a nil értéket adom neki - de valamiért nem jó, mert jobb egérkattintásra még mindig mutatja a labdákat, holott erre kéne eltűnnie az összesnek. Ha odaírom, hogy destroy vagy free, az sem jó neki. Itt a teljes kód:
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
 
type
 
  { TFoAblak }
 
  TFoAblak = class(TForm)
    KepFrissito: TTimer;
    //procedure FormClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure KepFrissitoTimer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
type TLabda=class(TObject)
  var xhely,yhely: integer;
  kepe: TBitmap;
  private
  public
    constructor letrehoz(xhelyitt,yhelyitt: integer; kepeitt: Tbitmap);
end;
 
var
  FoAblak: TFoAblak;
  labdakep: Tbitmap;
  egylabda: TLabda;
  labdadb: integer;
  labdatomb: array [1..100] of TLabda;
 
implementation
 
{$R *.lfm}
constructor TLabda.letrehoz(xhelyitt,yhelyitt: integer; kepeitt: Tbitmap);
begin
        xhely:=xhelyitt;
        yhely:=yhelyitt;
        kepe:=kepeitt;
end;
 
{ TFoAblak }
 
{procedure TFoAblak.FormClick(Sender: TObject);
var egerhely: TPoint;
begin
      egerhely:=FoAblak.ScreenToClient(mouse.cursorpos);
      egylabda:=TLabda.letrehoz(egerhely.x,egerhely.y,labdakep);
      FoAblak.Canvas.Draw(egylabda.xhely,egylabda.yhely,egylabda.kepe);
end;  }
 
procedure TFoAblak.FormCreate(Sender: TObject);
begin
  labdakep:=TBitmap.Create;
  labdakep.LoadFromFile('labdabmp.bmp');
  labdadb:=1;
end;
 
procedure TFoAblak.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i: integer;
begin
        case button of
          mbLeft:
        begin
          egylabda:=TLabda.letrehoz(x,y,labdakep);
          //FoAblak.Canvas.Draw(egylabda.xhely,egylabda.yhely,egylabda.kepe);
          labdatomb[labdadb]:=egylabda;
          inc(labdadb);
        end;
        mbRight:
        begin
             for i:=1 to labdadb-1 do
             begin
               labdatomb[i]:=nil;
             end;
             //labdadb:=1;
        end;
        end;
end;
 
procedure TFoAblak.KepFrissitoTimer(Sender: TObject);
var i: integer;
begin
for i:=1 to labdadb-1 do
begin
     if labdatomb[i]<>nil then
               FoAblak.Canvas.Draw(labdatomb[i].xhely,labdatomb[i].yhely,labdatomb[i].kepe);
end;
KepFrissito.Interval:=10;
end;
 
end.
#1719

  • Tomi
  • Tomi profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 27
  • Köszönetek: 1

Tomi válaszolt a témára: Egy kezdő Lazarus használó kérdései

Huhhh, végre sikerült! Köszönöm az újabb segítséget! :cheer:
Így sikerült megoldani:
procedure TFoAblak.FormClick(Sender: TObject);
var egerhely: TPoint;
begin
      egerhely:=FoAblak.ScreenToClient(mouse.cursorpos);
      egylabda:=TLabda.letrehoz(egerhely.x,egerhely.y,labdakep);
      FoAblak.Canvas.Draw(egylabda.xhely,egylabda.yhely,egylabda.kepe);
end;
Az az érdekes, hogy az egerhely változó közbeiktatása nélkül, tehát így:
egylabda:=TLabda.letrehoz(mouse.cursorpos.x,mouse.cursorpos.y,labdakep);
nem működött. Pedig mindenhol így olvastam, és nem tértek ki arra a kiegészítésre, amit írtál.
#1711

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Egy kezdő Lazarus használó kérdései

A CursorPos így érhető el: Mouse .CursosPos
Ez azonban az egérmutató képernyőn elfoglalt helyét tartalmazza, ezért át kell alakítanod az ablakhoz viszonyított koordinátára, pl így: Form1. ScreenToClient (Mouse.CursorPos);

A Mouse.CursorPos mindig az egérmutató pillanatnyi helyét tartalmazza, és nem a kattintás helyét. Az onClick esemény kezelője akkor kerül futtatásra ha a lenyomás és a felengedés is ugyanazon elem területén, de nem feltétlenül ugyanazon a ponton történik. A két esemény között (lenyomás és felengedés) az egérmutató ideiglenesen el is hagyhatja az elem területét, mint tudjuk.
Javaslom, hogy ez esetben az OnMouseDown eseménykezelőt használd
#1710