Hirdetés
Új hozzászólás Aktív témák
-
yksz
aktív tag
Nem ide tartozik, de melyik progival lehet fórummotort csinálni?
Fly away my precious knowledge fly far away
-
yksz
aktív tag
A {$WARN SYMBOL_PLATFORM OFF} csak annyit csinál, hogy a warnokat, meg a hinteket nem mutatja meg, vagy ki is ''torli'' a progiból?
Fly away my precious knowledge fly far away
-
yksz
aktív tag
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Shape1.Top:=Shape1.Top+1;
if shape1.Top=170 then shape1.Top:=50;
if shape1.Top=50 then timer1.Enabled:=false;
end;
procedure TForm1.Shape1Click(Sender: TObject);
begin
Osszeg:=StrToInt(Edit1.Text);
if Osszeg=0 then label1.Visible:=true;
if Osszeg>0 then
begin
Osszeg:=Osszeg-2;
Edit1.Text:=Inttostr(Osszeg);
Timer1.Enabled:=true;
Timer2.Enabled:=true;
Timer3.Enabled:=true;
Timer4.Enabled:=true;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
T:=T+1;
if T>3 then T:=1;
if T=1 then Image2.Visible:=true else image2.Visible:=false;
if T=2 then Image3.Visible:=true else image3.Visible:=false;
if T=3 then Image4.Visible:=true else image4.Visible:=false;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
A:=T+1;
if A>3 then A:=1;
if A=1 then Image5.Visible:=true else image5.Visible:=false;
if A=2 then Image6.Visible:=true else image6.Visible:=false;
if A=3 then Image7.Visible:=true else image7.Visible:=false;
end;
procedure TForm1.Timer4Timer(Sender: TObject);
begin
B:=T+1;
if B>3 then B:=1;
if B=1 then Image8.Visible:=true else image8.Visible:=false;
if B=2 then Image9.Visible:=true else image9.Visible:=false;
if B=3 then Image10.Visible:=true else image10.Visible:=false;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
T:=2;
A:=1;
B:=3;
end;
procedure TForm1.Timer5Timer(Sender: TObject);
begin
timer2.Enabled:=false;
if Timer2.Enabled=false then timer3.Enabled:=false;
if timer3.Enabled=false then timer4.Enabled:=false;
end;
A Timer5 nem állítja le a képek váltakozását. Mit írtam rosszul? Hibát nem ír, csak nem áll le. Ja, ha fontos az intervalja: 6000Fly away my precious knowledge fly far away
-
Drótszamár
őstag
Sziasztok!
Tudna nekem valaki segíteni? Futási időben akarok képeket (Timage) pakolni egy másik kép fölé, de nem akar összejönni.
k : array[1..1000] of Timage;
for i:= to 1000 do ......
k:=Timage.create(szülő);
k.top, left, picture.loadfromfile, .....
Beállítok egy csomó mindent de nem jelenik meg a kép.
Mit szúrtam el? Nagyon rossz irányba indultam ?
(a végső verzióban majd egy sorban akarom tárolni a képeket)( 2b || !2b ) az itt a kérdés...
-
zenit
tag
válasz Drótszamár #454 üzenetére
A Parent property-t is be kell állítani a szülőre (a Create csak a tulajdonost állítja).
Elképzelhető, hogy a korábban létrehozott kép takarja az újat (de nem biztos!), ekkor használd a BringToFront eljárást.
Szerk: A Create-nek csak akkor adj meg paramétert, ha azt akarod, hogy a tulajdonosa szabadítsa fel, amikor majd ő is felszabadul. Én jobb szeretem az általam létrehozott objektumokat magam felszabadítani, így ekkor elég egy nil-t megadni.
[Szerkesztve] -
Szalma
őstag
válasz Drótszamár #456 üzenetére
(Még egy apróság: TGraphic igen nehezen fog TWinControl fölé kerülni, parent ide vagy oda... (Vindóz+delfi -> végtelen z-order mizéria. ) Egy tipp alternatív megoldásra (szebb, jobb látvány, kissebb .exe az eredménye):
TBitmap-ekbe rántsd be a képeket, majd egy legfelülre hozott wincontrol (mondjuk TPanel) felületére (canvas) fessd fel BitBlt-el vagy StretchBlt-el.)
Szeretettel:
Szalma -
zenit
tag
válasz Drótszamár #456 üzenetére
Bocs, kicsit félreérthető voltam:
úgy értettem, hogy ilyenkor egy nil-t kell átadni neki paraméternek. -
Alan
aktív tag
válasz Drótszamár #456 üzenetére
Hallgass Szalmára, nagyon jól mondja. StretchBlt() a te barátod, vagy inkább StretchDraw(), ha nem akarsz ennyire mélyre fúrni. A TBitmap-eket menet közben is létrehozhatod, sőt elég belőle összesen 2 vagy 3, aztán majd ezekben váltogatod a képeket körbe-körbe (double/triple buffer).
[Szerkesztve]
Ja, és olvass doksit, próbálkozz, kísérletezz, abból tanulsz csak. Ha a fórumon válaszolunk neked, abból nem tanultál sokat, legközelebbre elfelejted. Nem lesz a tiéd a tudás, csak felhasználod.
[Szerkesztve] -
Drótszamár
őstag
Kössz az alternatív megoldást. De, mert de mindíg van... Egy valamit elfelejtettem mondani: a képeknek majd funkcionálni is kéne: felémegyek --> hint, ha rákattintok akkor pedig uj form megnyitása, a képtől függő tartalommal.
Asszem valami más megoldást kell kitalálnom. Buttont nem akarok használni, mert csúnya.
Ha nem jutok semmire lehet hogy glscene-vel csinálom meg.
Kössz a segítséget mindenkinek.( 2b || !2b ) az itt a kérdés...
-
Drótszamár
őstag
-
Szalma
őstag
válasz Drótszamár #460 üzenetére
(A TPaneles megoldás a te barátod. Van jó kis onclickje (vagy hogyhívják delfiben), meg hintje is... Lehet egy custompanelből kellene egyet származtatni, de nem fontos.
Panelra tedd rá azt a fránya TImage-t, design time-ban jobbgomb a panelen és bringtofront (van ilyen?!), majd a programból méretezd és pozícionáld oda és akkor a panelt, amikor szükség van rá. (Boundsrect talán a nyom a helpben. SetBounds?) Vigyázz! A TImage align paraméterét az első formcreate-ben (talán onshow mégjobb lenne) állítsd széthúzósra, mert különben rémálom lesz a panelt eltalálni egérrel...)
Szeretettel:
Szalma -
Alan
aktív tag
válasz Drótszamár #461 üzenetére
Persze, OK, én is kérdezgetek fórumokon, csak nem voltam biztos benne, hogy szerinted sem pótolja ez a kutatást. De most már tudom, hogy szóval vedd úgy, hogy nem szóltam semmit
-
yksz
aktív tag
Most nem tudom sehogy se kipróbálni, és a Helpen sincs konkrétan leírva, ezért kérdezem meg, hogy az Internet=>Clientsocket és Serversocket jó LAN-ra is, vagy csak Internet?
Fly away my precious knowledge fly far away
-
Erick
csendes tag
Üdvözlök mindenkit!
Segítség!
A problémám nem tudok fájlkezelést csinálni!Szüksége lenne fájl törlésre,másolásra,létrehozásra, ugyanezt szeretném könyvtárral is megcsinálni.
Még kezdő vagyok! Könyvem az van csak nem találtam benne megoldást, példa meg abszolút nincsen benne.Probáltam már sok irányban elindulni,de semmi nem vezetett sikerre.Leginkább példával vagy forráskóddal tudnátok segíteni,mert elméletben már minden itt van a fejemben,csak a megalósítást nem tudtam véghez vinni.
A másik kérdésem,hogyan lehet billentyűkombinációt rendelni a DriveComboBox-hoz?
A célom egy fájlkezelőprogram elkészítése
Nagyon szeretném,ha ebben nekem segítenétek!
Előre is köszi!!!
[Szerkesztve] -
yksz
aktív tag
Lao ce hova tunt? Pedig már egész jól kijottem vele. Mind1 addig jó míg van vki, aki megválaszolja kérdéseinket.
Fly away my precious knowledge fly far away
-
BatemanX
tag
1. Helpben file management routines-ra keress rá és kidobja az összes függvényt/eljárást, amire szükséged lehet.
2. Itt attól függ, mikor és milyen billentyűzetkombinációt akarsz hozzárendelni. Ha pl. csak annyirra van szükséged, hogy ha a Comboboxon állsz, mondjuk F5-re nyiljon le, az viszonylag egyszerű. Az OnKeyDown eseménykezelőhöz kell vmi ilyesmit rendelni:
procedure TForm1.DriveComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_F5 then
DriveComboBox1.DroppedDown := true;
end;
Ha viszont azt szeretnéd, hogy a formon bárhol álllva (tehát nem a DriveComboBox-on van a fókusz) és úgy reagáljon vmi billentyűkombinációra...nos az egy komplikáltabb dolog.''Budapest, hajnali fél három, gyenge szél, 14 fok. A hajam tökéletes, de azon a rohadt tesztszerveren még mindig 1000-es várakozási sor van...'' -F-ECT$ a WoW tesztszerverről.
-
gone
csendes tag
Sziasztok! Meg tudná nekem mondani valaki, hogy Delphiben
hogy lehet lekérdezni a felhasználó nevét (aki a windows-ba bejelentkezett és használja a programomat) Valamint azt, hogy milyen felhasználó (rendszergazda vagy más/van-e rendszergazda joga).Ezekre a tulajdonságokra lennék kíváncsi.
Üdv Gone -
BatemanX
tag
Felhasználónév:
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
UserName : string;
UserNameLen : Dword;
Begin
UserNameLen := 255;
SetLength(userName, UserNameLen) ;
If GetUserName(PChar(UserName), UserNameLen) Then
Label1.Caption := UserName;
end;
A jogokat passzolom.''Budapest, hajnali fél három, gyenge szél, 14 fok. A hajam tökéletes, de azon a rohadt tesztszerveren még mindig 1000-es várakozási sor van...'' -F-ECT$ a WoW tesztszerverről.
-
Erick
csendes tag
Köszi a hozzászólásod BatemanX!
Nekem pont a bárhol álok billentyűre reagálás kéne,azt nem tudom megoldani. -
Szalma
őstag
(Hát az elég fogós. Írni kell egy saját üzenet diszpeccselőt, amiben elcsíped a neked kellő windows message-kat, a többit pedig tovább passzolod. A fő form ablakának az üzenetkezelőjébe kellene beilleszkedned. WndProc környékén kell nézelődni, a VCL-ben megtalálod, onnan ki lehet lesni...
''Sajnos'' most nincs delfim, nem tudok pontosabb infóval szolgálni...)
Szeretettel:
Szalma -
joe o4
tag
mi az a delphi
http://joe04.atw.hu
-
BatemanX
tag
Hűha, akkor ehhez kicsit jobban a dolgok mélyére kell ásni. Most lehet, hogy sok hülyeséget fogok írni, a szakértőbbek majd kijavítanak, mivel amit leírok csak tapasztalati tényeken alapszik és nem ismerem hozzá a Delphi mélylélektanát.
Szóval a probléma ekkor az, hogy mindig az a komponens kapja meg a billentyűleütést, amelyiken a fókusz van, így 3 lehetőséged van:
Legrosszabb:
Minden formon lévő komponensed onkeydownjához odaírod a már említett kódot.
Valamivel egyszerűbb, de nem javasolt undorító heggesztés:
Override-olod a WndProc eljárást és figyeled a Message paraméterét. Ha az általad kívánt billentyűkombináció jön, meghívod a megfelelő eljárást.
Elegáns, jó megoldás:
Csinálsz egy ''hook''-ot a billentyűzet eseményekre. Erre most konkrét kódot nem írnék, mert elég komplikált, inkább google-ban keress rá a CallNextHookEx eljárárásra és a találatok között biztos lesz olyan ami rávilágít a megoldásra (annó én is ezt csináltam).''Budapest, hajnali fél három, gyenge szél, 14 fok. A hajam tökéletes, de azon a rohadt tesztszerveren még mindig 1000-es várakozási sor van...'' -F-ECT$ a WoW tesztszerverről.
-
Szalma
őstag
válasz BatemanX #477 üzenetére
(A borland szerint a WndProc az elfogadható megoldás. Ezért overrideolható. És delfihez képest elegáns... A windows szintű hook nem épp korrekt... És csak az üzenet dispatch végén kapja meg a fókuszba lévő kontroll az üzenetet. A vindóz elsőnek a fókuszált ablaknak adja, az meg annak, akinek akarja... Mivel a delfi VCL nem túl windows, ezért saját üzenetosztója van. Ezt tudja az ember meglovagolni...)
Szeretettel:
Szalma -
BatemanX
tag
Na ja. A WndProc-cal való szembenállásom onnan eredeztethető, hogy ha nem vigyáz nagyon az ember, itt keletkezhetnek a legszebb Access Violation hibák (amik néha a fejlesztőkörnyezetet is hazavágják...ó hány órányi munkám veszett oda 1-2 alkalommal emiatt ) és az ide írt kódrészek szinte teljesen ''debugolhatatlanok''. (Próbáljon az ember egy olyan eljárásba flag-et helyezni, ami már akkor meghívódik, ha megmozdítja az egeret.)
Nekem a hook sokkal jobban bevált.''Budapest, hajnali fél három, gyenge szél, 14 fok. A hajam tökéletes, de azon a rohadt tesztszerveren még mindig 1000-es várakozási sor van...'' -F-ECT$ a WoW tesztszerverről.
-
Szalma
őstag
válasz BatemanX #479 üzenetére
(Ne vegye senki magára, a következő kritikám elsősorban a tendenciára vonatkozik: a ''könnyűnek'' tűnő debuggolási lehetőség gondosan leszoktatja az embereket a programozás kódolás előtti (gondolkodós) szakaszáról, mert majd debug közben megnézzük, hogy a változók hogyan állnak (stb.) és egyre inkább előtérbe kerül az iteratív, próbálkozzunk, amíg elfogadható nem lesz jellegű kódolás... És szerintem ez rossz...)
Szeretettel:
Szalma
ui.: Ha van korrekt debugger, persze én is használom. A delfié különösen jó. -
_AnTi_
tag
Szia! Ezt egy ezer éves progimból szedtem ki, remélem segít (a billentyű nyomkodásra egy példa)!
Private/public részben deklaráld mondjuk ezt:
procedure gomb(var msg: tmsg; var handled: boolean);
procedure TForm1.gomb(var msg: tmsg; var handled: boolean);
var
keybstate: Tkeyboardstate;
begin
case msg.message of
WM_KEYFIRST..WM_KEYLAST:
begin
getkeyboardstate(keybstate);
if (keybstate[VK_LEFT] and 128)=128 then
balra;
handled:=true;
end;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
application.OnMessage:=gomb;
end;
A billentyűkonstansokat megtalálod a helpben, ha rákeresel mondjuk a VK_LEFT-re! Így elvileg ha aktív a progid, akkor bármely billentyűt le tudod kezelni (ha van rá konstans). Természetesen, ha nagy hülyeséget írtam javítsatok ki!
Bye!Szép vagyok és okos, ügyes és aranyos...
-
Alan
aktív tag
Pont ezt akartam javasolni (Application.OnMessage), csak elaludtam, _AnTi_ megelőzött
Még egyszerűbb egyébként az ApplicationEvents komponens használata, aminek az OnMessage eseményét kell ugyanígy megadni. Arra vigyázni kell, hogy borzalmasan gyakran (akár másodpercenként ezerszer) fog meghívódni az ide helyezett rutin, ezért nagyon áramvonalasra kell megírni. -
lao ce
aktív tag
engem kifejezetten bosszant ha a debuggert kell hasznalnom, nalam az mar a harmadik lepes, a 'mi a tokom van mar ezzel, debuggolni kell' kategoria.
elotte van a 'haladok tovabb es kozben kigondolom mi a baj' es az 'odalapozok a kodhoz es bambulom egy darabig'.
a debug utan mar csak az 'akkor csinaljuk maskent', a 'keresgelek az interneten' es vegul a 'megkerdezem az interneten' kategoriak vannak.
ami erdekes, hogy attol fuggoen hogy melyik lepesben oldodik meg a baj, visszafele is lepdelek. tehat ha valaki segit az interneten, akkor utana meg keresgelek egy darabig hogy miert is nem talaltam meg eredetileg valamint mas megoldasok utan. aztan beepitem es remenykedek hogy megy, debuggal megnezem hogy mi tortenik a kapott kodreszletben. aztan bambulok a sorokra hogy megertsem, vegul haladok tovabb es gondolkodok rajta hogy hogy a tokombe nem lehetett erre rajonni magamtol is.
van akinel 'nem megy ezert zaklatok emailen idegeneket' kategoria az elso es egyetlen.
ps: aramvonalas rutinoknicht kompot
-
Alan
aktív tag
Tetszik a nyelvi leleményem, mi? Csak azért, hogy ne unatkozzon nagyon, aki olvassa
Egyébként amit a debugolásról írsz, az a szívemből szól. Gondolkodni kell, különben az ember elhülyül az automatikus kiegészítőktől, a CodeRush automata mindenféléjétől, ami persze szükséges, mert ha már egyszer használtad, nem bírod ki nélküle, de nem szabad rögtön a debuggerhez kapni meg átírni úgy, hogy nem is értem, mi volt a probléma. OK, van, hogy fél nap elmegy egy problémára, de ha megoldod, annál jobb nincs.
Én e-mailt csak akkor írok mondjuk valami supportnak, ha biztosan tudom, hogy az idegen kód a hibás, kinyomoztam, hol a hiba és tudom vagy legalább sejtem, hogy lehetne kijavítani. Addig inkább küzdök, és közben rájövök egy csomó hasznos mindenfélére.
Kár, hogy amikor ''termelni'' kell, nincs idő és az ember ráfanyalodik a borzalmakra, mindenfélék bemásolására kipróbálás nélkül és egyebek, fujj. Azért ezt igyekszünk leszorítani jól -
Erick
csendes tag
Köszi a hozzászolásokat,sikerült megoldanom a dolgot!
A következő problémám tudok fájlt kezelni,de nem tudok könyvtárt, egyenlőre nem találtam megoldást,hogyan kell könyvtárat másolni,remélem tudtok segíteni. -
corvin
csendes tag
Üdv!
Egy (szerintem) egyszerű kérdésem lenne: Delphiben hogy lehet megoldani azt, hogy egy Image objektum a képét nem a 0;0 koorinátától mutassa, hanem pl, az 50;50-től? Tehát a kép bal felső sarkát eltoljam az Image bal felső sarkától... -
corm
senior tag
Ahoj neketk! Olyan kérdésem lenne, hogy xml fileokból kívánnám beolvasni a bennük szereplő értékeket, és írni is beléjük, frissítés szerűen. Van a delphinek olyan része, ami ezt királyosan kezeli, vagy nincs? Ha van némi alap tudást is oszthattok ezzel kapcs. thx előre is...
Y N W A
-
Alan
aktív tag
Egy lehetőség: tegyél fel egy TPaintBox komponenst a kívánt méretben, alá egy gombot (Button1), majd a következő kódot írd bele a programodba:
...
var ABitmap: TBitmap;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
ABitmap := TBitmap.Create;
ABitmap.LoadFromFile('c:\temp\kép.bmp');
PaintBox1.Canvas.Draw(0, 0, ABitmap);
end;
Ekkor ''normálisan'' kirjazolja a képet. A 0, 0 helyére kell beírnod a kívánt koordinátákat az eltolt rajzoláshoz.
Aztán persze lehet továbbfejleszteni, a koordinátákat más kezelőszerv állásához vagy az egér mozgásához kötni lenyomott bal gomb esetén stb. -
Alan
aktív tag
Hát... ehhez én első lépésben a TXMLDocument komponenst ajánlom (Internet fül a komponenspalettán). Nem vészesen bonyolult a használata, itt egy kis példa neked kiollózva egy régebbi programomból:
procedure AddNodesToTree(From: IXMLNode);
var i: integer;
CurrentXMLNode: IXMLNode;
begin
for i := 0 to From.ChildNodes.Count-1 do
if From.ChildNodes[ i ].NodeName = 'keresettcimke'
then begin
CurrentXMLNode := From.ChildNodes[ i ];
// adatfeldolgozás a CurrentXMLNode alapján
// pl. valami := CurrentXMLNode.Attributes[ 'egyikattributum' ] ;
// valami2 := CurrentXMLNode.Attributes[ 'masikattributum' ] ;
end;
if CurrentXMLNode.HasChildNodes then AddNodesToTree(CurrentXMLNode);
end;
...és ezt a rutint így hívnám meg:
AddNodesToTree(XMLDocument1.DocumentElement, nil);
Remélem, olvasható marad a kód...
[Szerkesztve] -
Terrorista
senior tag
Üdv!
Hogyan lehet egy FileListBox-ban megállpítani azt, hogy melyik elem van kiválasztva, illetve annak a filenak a nevét megkapni??
Egy filemanagert szeretnék készíteni és ahhoz kellene, hogy pl. másolásnál meg tudjam adni, hogy melyik file van kiválasztva. -
Terrorista
senior tag
UP!
Valaki segítsen mert sürgős lenne!!
Előre is kösz! -
Terrorista
senior tag
válasz Terrorista #494 üzenetére
UP!
-
BatemanX
tag
válasz Terrorista #493 üzenetére
FileName : string;
...
FileName := FileListbox1.Items[FileListbox1.ItemIndex];''Budapest, hajnali fél három, gyenge szél, 14 fok. A hajam tökéletes, de azon a rohadt tesztszerveren még mindig 1000-es várakozási sor van...'' -F-ECT$ a WoW tesztszerverről.
-
Flashback
addikt
Nálam kicsit komplexebb a probléma.
Deplhi 7 alatt akrok programozni. Delphi 6-ban ismertem a jól bevált Server-Socket komponenseket. De ez 7.0-alatt nincs. Itt mi helyetesíti ezeket!! HELP!!profi gőzállomás eladó - Bocs nincs hosszú ö, ü és néha az á is ä :)
Új hozzászólás Aktív témák
- iPhone 15 Pro 128GB FEHÉR TITÁN MAKULÁTLAN
- iPhone 14 128GB Lila Független Mint Az Új/1-3 hónap gar./Akku 92%/p3826
- minigép/ i5 6500T 35W/ Dell 3050 micro/ garancia/ ingyen foxpost
- Új Modell Apple Watch Ultra 2 49mm Black/2025.09.21 Apple Gar./p3825/
- Cisco SG200-50 smart switch - 48+2 portos Gigabites
Állásajánlatok
Cég: HC Pointer Kft.
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest