Lazarus 3.0 (2023.12.21.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Válasz:kivetelkezeles 2011 máj. 23 09:10 #781

  • thadam
  • thadam profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 14
  • Köszönetek: 0
Hello,

kossz a hozzaszolasokat szerintem majd kiprobalom mindketto lehetoseget!!!

Válasz:kivetelkezeles 2011 máj. 23 08:21 #780

  • brownie
  • brownie profilkép
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
Sziasztok!

Tudod vizsgálni, hogy a felhasználó milyen billentyűt ütött le. Ha csak számot fogadsz el, itt a kód:

procedure TfrmValamiform.Edit1KeyPress(Sender: TObject; var Key: char);
begin
If not (Key in) then
Key:=#0;
end;

Át lehet úgy is alakítani, hogy csak betűt fogadjon el: , vagy nagy betűk, vagy amit akarsz.

Kivételkezelés:

try
utasítás
except
utasítás pl. hibaüzenet, utasítás visszavonása.
Az except utáni utasítások csak akkor hajtódnak végre, ha a try utáni utasítás hibát okoz.

try
utasítás
finally
utasítás jellemzően objektum.free.
A finally utáni utasítás mindenképpen végrehajtódik, ha van hiba a try után, ha nincs.

Bocs, ha kicsit összecsapott, de sietek.

Szép napot!

Válasz:kivetelkezeles 2011 máj. 20 16:03 #775

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 504
  • Köszönetek: 86
Használd a Lazarus-ban az "Additional" fülön megtalálható TMaskEdit-et.
Részletek itt: lazarus-ccr.sourceforge.net/docs/lcl/maskedit/index-4.html
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

Válasz:kivetelkezeles 2011 máj. 20 12:41 #774

  • thadam
  • thadam profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 14
  • Köszönetek: 0
Hello,

koszonom, teljesen igazatok van. Nagyon jól mukodik ugy ahogy Gábor irta.

Akkor kerdeznek meg ha nem gond:
Egy beviteli mezoben "Edit1" be lehet allitani olyat h csak szamokat lehessen beirni, vagy ebben az esetben is ellenorizni kell h melyik billentyuzetgombot utotte le a felhasznalo - OnKeyPress-, OnKeyDown-ban?
Gondom az hogy bekerek egy tizedes szamot, ami Edit-ben ugye string, azt atkonvertalom tizedesszamra
FloatToStr(Edit1.Text)
- de ha rossz karakter irok be mondjuk vmi betut akkor irja h nem tudja konvertalni. Es ezt vmi emberi modon megoldani h ne ugorjon ki a hibauzenet h nem tud konvertalni...

Válasz:kivetelkezeles 2011 máj. 20 08:17 #773

  • Athomas
  • Athomas profilkép
  • Moderátor
  • Moderátor
  • Sör, virsli, Lazarus
  • Hozzászólások: 46
  • Köszönetek: 0
Gábornak igaza van, még csak annyit tennék hozzá, hogy a try - finally azért sem lenne jó, mert véleményem szerint try-except kéne.

Válasz:kivetelkezeles 2011 máj. 19 17:49 #772

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 504
  • Köszönetek: 86
Ez elsö olvasatra "amatör" hibának tünik. Ide nem "try" kell, hanem megfelelő ellenörzés.

Két javaslat:

SpeedButton1.Click-ben megvizsgálod hogy a StringGrid1-ben van-e kijelölt elem és csak ha igen (StringGrid1.Col és StringGrid1.Row vagy StringGrid1.Selection) akkor hívod meg az adatokat feldolgozó eljárást...

-vagy-

Alapállapotban legyen letiltott a SpeedButton1 (Enabled-->False) és csak akkor engedélyezd amikor a StringGrid1-ben kijelölésre kerül valamelyik elem (eseménykezelés--> onSelection)


A try témáról pedig itt olvashatsz: www.freepascal.org/docs-html/ref/refch14.html#refse78.html
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

kivetelkezeles 2011 máj. 19 16:09 #771

  • thadam
  • thadam profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 14
  • Köszönetek: 0
Hello,

tudjatok hogyan kell hasznalni a Try finally end kivetelkezelest?
En valami ilyennel probalkoztam:
procedure TRaktar.AktualisKiiras(strgrid: TStringGrid; i: Integer);
begin
  strgrid.RowCount:=1;
  try
    Raktar[i-1].Kiir(strgrid); 
  finally
    ShowMessage('hiba');
  end;
end;

Attol fuggoen iratom ki az aktualis megrenelot hogy melyik van kijelolve a TStringGrig komponensben.

MainUnit:
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  StringGrid1.Visible:=true;
  s.AktualisKiiras(StringGrid1,BejeloltSorIndex);
end;

Kerdesem az lenne, hogy hogyan tudnam kivedeni azt a hibat hogy a felhasznalo megnyomja a SpeedButton1-et de nincs kijelolve semmilyen megrendelo a TSstringGrid komponensben. Ilyenkor ugye ha rossz a BejeloltSorIndex akkor lefagy a program mivel olyan elemre hivatkozok a tombben ami nincs is. Barmilyen otlet jol jon. Vagy ha nem igy kellene akkor hogyan??? Koszonom

  • Oldal:
  • 1