- A Samsung bemutatta az Exynos 2500-at
- Okosóra és okoskiegészítő topik
- One mobilszolgáltatások
- Megjelent a Poco F7, eurós ára is van már
- Telekom mobilszolgáltatások
- Samsung Galaxy A54 - türelemjáték
- India felől közelít egy 7550 mAh-s Redmi
- Samsung Galaxy S21 FE 5G - utóirat
- Apple iPhone 16 Pro - rutinvizsga
- Sony Xperia 1 V - kizárólag igényeseknek
Új hozzászólás Aktív témák
-
g4dg3t
senior tag
Sender parameter megadja a hivo objektumot, tehat (Sender as TEdit).xxx formaban el tudod erni a peldany osszes property-jet es metodusat.
(Sender as TEdit).Name-el kapod meg a peldany nevet...ezt hasznalhatod ha el akarod agaztatni.
pl.:
...
if (Sender as TEdit).Name = 'Size' then
... -
g4dg3t
senior tag
celszeru beszerezni egy normalis NumericEdit komponenst, de ha nem akarsz kulso stuffot es tenyleg nincs szukseged mas ficsorre akkor a TEdit.OnKeyPress esemenyet kezeld le az alabbi koddal:
const EDITMAXVALUE = 10000;
var tmpNum: integer;
begin
if Key in ['0'..'9'] then begin
tmpNum:=StrToIntDef((Sender as TEdit).Text + Key,0);
if tmpNum > EDITMAXVALUE then Key:=#0;
end
else
if Key <> Char(VK_BACK) then Key:=#0;
end;
[Szerkesztve] -
bevik
csendes tag
-
P.H.
senior tag
Ha mindenképp a string végén van a 3 lebegőpontos, space-szel elválaszva, akkor haladj hátulról.
var
..I,J,Pos: longint;
..Szam: array [1..3] of double;
..Data,Temp: string;
..begin
....data:='szin bela 0,0 0,0 0,0';
....for pos:=3 downto 1 do begin i:=length(data);
......while (i > 1) and (data <> ' ') do dec(i);
......temp:=copy(data,i+1,MAXLONGINT);
......szam[pos]:=strtofloat(temp);
......delete(data,i,MAXLONGINT); end; end;
(ha a copy() vagy a delete() utolsó paramétere MAXLONGINT, akkor a string végéig fog másolni/törölni).
Ha az sem igaz, hogy biztosan space-ekkel vannak elválasztva, akkor
(data <> ' ') helyett mehet (datain ['0'..'9','.',',' ] ), akkor is törölni fogja az elválasztó karaktert.
Arra viszont figyelj, hogy ha StrToFloat-tal konvertálod számmá, akkor angol Windows alatt . (pont) a tizedes-elválasztó, magyar alatt pedig ',' (vessző), különben leáll exception-nal. Érdemes így írni, amit írtam fentebb:
......try..szam[pos]:=strtofloat(temp);
......except for j:=1 to length(temp) do
........if temp[j] = '.' then temp[j]:=','
........else of temp = ',' then temp[j]:='.';
........try szam[pos]:=strtofloat(temp);
........except { ekkor hiba van, 2 pont vagy 2 vessző } end; end;
Ekkor a pontokat lecseréli vesszőre és a vesszőket pontokra, és lemegy, mindegy, milyen nyelvű a Windows. Illetve nem teljesen, mert ha a Vezérlőpontban a tizedes-elválasztót átírták valami másra, akkor így jártak :)
[mod]: csak normális kinézetű lesz lesz lassan...
[Szerkesztve] -
g4dg3t
senior tag
úgy szerinted nem jó ha poszal megkeresem az első pontot, s index-1től kopizok?
Ha elofeltetelkent kikothetjuk, hogy a keresett resz elott nem fog ''.'' szerepelni a string-ben, akkor jo lehet ugy is. Tehat ''szin.ize bela.bigyo 0.0 0.0 0.0'' sornal gondot okozna.
Jol ertem, hogy a Pos fv-t belepesi feltetelkent hasznalod? Az igy vegtelen ciklust kell, hogy okozzon. Postold azt a while ciklust, este megneznem.
[Szerkesztve] -
g4dg3t
senior tag
legegyszerubben Pos, PosEx es Copy fuggvenyekkel (elofeltetel hogy a stringben mindig a 3. space-tol kezdodjek a kerdeses reszlet):
var
Ind: integer;
OutStr: string;
...
Ind:=Pos(#32,Sor);
if Ind > 0 then Ind:=PosEx(#32,Sor,Ind + 1);
if Ind > 0 then Ind:=PosEx(#32,Sor,Ind + 1);
if Ind > 0 then OutStr:=Copy(Sor,Ind + 1,Length(Sor) - Ind)
else OutStr:='';
...
Pos es PosEx fv helyett ciklust is szervezhetsz...kinek mi elegansabb.
[Szerkesztve] -
P.H.
senior tag
Legegyszerűbben a pos függvénnyel.
Pl.: i:=pos('amit keresel','amiben keresel').
Longint típust ad vissza, ha ez nulla, akkor a keresett szöveg nincs a sztringben, nemnulla esetén annak első előfordulási pozíciója.
[mod]: a kis- és nagybetűk között különbséget tesz.
[Szerkesztve] -
Tele von Zsinór
őstag
Tegyük fel pl hogy neked integerből kell egy tömb, azt így deklaráld:
var a: array of integer;
utána valahol a futás során kiderül, hogy 5 eleme kéne hogy legyen:
setlength(a,5);
ezután ugyanaz, mintha ezt csináltad volna:
var a: array[0..4] of integer;
és persze bárhol lehet állítgatni kisebbre, nagyobbra. Ha kisebbre veszed, akkor a végéről kiesnek az elemek, azokat nem kapod vissza, ha megint nagyobbra állítod.
[Szerkesztve] -
btotyi
tag
Tedd rá egy button onclick-re
procedure TForm1.Button1Click(Sender: TObject);
Var i : integer ;
Button : TButton ;
begin
for i := 0 to 9 do
begin
Button := TButton.Create(Self);
Button.Caption := IntToStr(I) + '. gomb';
Button.Parent := Self;
Button.Top := i * 26 ;
Button.Visible := true ;
end;
end; -
ViragL
tag
Ok, csak javaslat volt.
Egyébként a Delphi helje a Borland büszkesége lehet, az egyik legjobb, ha nem a legjobb. A dinamikus tömbre konkrétan emlékszem, hogy nagyon szépen le van írva. A filelistás dolgot is megtalálod a helpben, ha szerencséd van van hozzá példakód is az alapján el kell, hogy boldogulj.
[Szerkesztve] -
ViragL
tag
A 2. problémához annyit fűznék hozzá, hogy HA megoldható, akkor ne futásidőben hozd létre a gombokat stb, hanem használj statikus eszközöket, és futásidőben csak a Visible propertyjüket állítgasd. Ha ez megoldható, ez gyorsabb szebb és biztosnágosabb megoldás lesz, ráadásul sok macerától mented meg magad.
[Szerkesztve] -
ViragL
tag
A klikkelős dolgot még mindig nem értem pontosan, ha a felhasználót szeretnéd rávenni, hogy klikkeljen akkor ''mond meg neki mit csináljon'' pl. ShowMessage() ablakban.
Ha azt akarod, hogy a program ''magátol'' klikkeljen valamire, akkor hivd meg annak az objektumnak az OnClick() eseményét, pl self paraméterrel. -
ViragL
tag
A cortonaSDk-t nem ismerem, de amikor hasonló problémával találtam magam szembe anno, az volt a probléma, hogy a futtatható álományon kivül kellett még néhány egyéb cucc is a program futtatásához. Az én esetemben néhány DLL-kellett pluszba, szerintem neked is hasonló problémád van.
Csak tipp, mivel nem ismerem a cortonaSDK-t, hogy nem elég feltelepíteni, újra is kell fordítani, hangsúlyozom, ez csak tipp.
A klikkelős kérdést nem értem, ki klikkeljen és hova? A felhasználó a program területén valahova, vagy a program klikkeljen a területén belül valahova, esetleg kivülre?
[Szerkesztve]
Új hozzászólás Aktív témák
Hirdetés
- Így nézz tévét 2025-ben: új ajánlások, régi szabályok
- A fociról könnyedén, egy baráti társaságban
- Medence topik
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- Vízpart, vakáció és hardverek
- Call of Duty: Black Ops 6
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- E-roller topik
- BestBuy ruhás topik
- További aktív témák...
- Azonnali A320 B350 X370 B450 X470 A520 B550 X570 chipset alaplap felvásárlás személyes/csomagküldés
- Ultimate előfizetés új fiókra akár 2105 Ft/hó áron! Azonnali, automatizált aktiválással, csak Nálam!
- Menő retró konfig: Q9550, Gigabyte P43, 4GB RAM, ASUS GT730,
- Turbózd fel géped a jövő RAM-jával!
- Epson Expression 12000 XL Nagyformátumú A3 szkenner
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest