Hirdetés

2024. május 3., péntek

Gyorskeresés

Hozzászólások

(#1051) ReJim


ReJim
őstag

valaki nem tudja megmondani, hogy hogyan lehet megadott ideig késlelteni két parancs között? :U mint pl a pascalban a delay...

</end.?>

(#1052) Drótszamár válasza ReJim (#1051) üzenetére


Drótszamár
őstag

Timerrel. De azért itt ez nem olyan eccerű. ha sokszor akarsz késleltetni, akkor vagy sok timert kell rápakolni a formra, vagy 1 timert kell úgy megírni, hogy mindíg jó programrészlet hajtódjon végre. (pl case segítségével )

( 2b || !2b ) az itt a kérdés...

(#1053) corm válasza ReJim (#1051) üzenetére


corm
senior tag

Van viszont egy sleep nevezetű fv. használata: sleep(szám);

Ám ekkor minden megáll. Ha azt akarod, hogy az egyik parancs várjon csak mondjuk 1 secet, akkor valóban timer. Vagy ha az a process amire várni kell küld valamiféle ''készvagyok'' szignált, akkor egy sima ciklus is elég...

[Szerkesztve]

Y N W A

(#1054) <Adamsky>


<Adamsky>
nagyúr

Sziasztok!

A következőben kérném a nagyérdemű segítségét:

A helyzet az, hogy eddig csak apróbb - egy gépes - programokat írogattam Delphiben, és most egy olyan feladatom lenne, melyben a hálózati kommunikációt is meg kellene oldanom.
Az egész tulajdonképpen egy vizsgáztató rendszer. Van egy ''szerver'' progi, melyhez kliens (max. 50) gépek csatlakoznak. A vizsga kezdetén a kliens gépek bejelentkeznek a szerverre, majd az átküldi a kérdéseket (szöveg & kép). A vizsga végén a kliens gépek visszaküldik a szervernek a kitöltött tesztlapokat, és kész. A kérdésem az, hogy milyen adatbázist (BDE, Interbase (Firefox) - ezeket ismerem) és módszert használjak a feladat megoldásához. Jó lenne, ha tudnátok ajánlani vm. jó könyvet, linket ami segít a megoldásban, vagy ami még jobb lenne az egy példaprogram.

Válaszokat előre is köszönöm!

(#1055) corm


corm
senior tag

Tudja valaki, hogy hogyan lehetne egy paradox táblában (table-datasource combo) random bejegyzéseket kiadogatni, egyszerűen? Találtam egy moveby eljárást, csak ezzel némileg körülménes a megvalósítás. A mezőkre meg direktbe nem lehet hivatkozni sajna, legalábbis eddig nem találtma :)


[Szerkesztve]

Y N W A

(#1056) wolffy


wolffy
aktív tag

Sziasztok!
Tudna nekem valaki segíteni abban, hogy miként valósítható meg, hogy egy mezei ComboBox elemei pl. egy gomb megnyomására egy adattábla x mezőjének rekordjai legyenek. Az alábbi értékadással már annyit sikerült elérnem, hogy az x mező egy rekordjának értékét felvegye a ComboBox elemének, de nekem az összes kéne.

ComboBox1.Items.Text:=DataModule1.table.Fields[4].Text;


DBComboBox-ot ismerem, de anélkül kellene a feladatot megvalósítani.
Válaszokat köszi!

(#1057) corm válasza wolffy (#1056) üzenetére


corm
senior tag

TDBLookupComboBox komponens a Data Controls fülröl kell neked.

de akkor semmi, csak kissé writeonlyban voltam :)

[Szerkesztve]

Y N W A

(#1058) <Adamsky> válasza wolffy (#1056) üzenetére


<Adamsky>
nagyúr

Valami ilyesmire ([link]) gondoltál?

(#1059) <Adamsky> válasza <Adamsky> (#1054) üzenetére


<Adamsky>
nagyúr

Upsz! :U

Tudom, hogy most vannak az Ünnepek, de egy segítőkész Delphi-s Tudor igazán megszánhatna. :U

(#1060) wolffy válasza <Adamsky> (#1058) üzenetére


wolffy
aktív tag

Igen ilyesmire gondoltam, nagyszerű. Köszi szépen és boldog új évet!

(#1061) wolffy válasza <Adamsky> (#1058) üzenetére


wolffy
aktív tag

Nos a gond csak annyi a példával, hogy én ADO-t használok és nem BDE-t. DBTable esetén a példádban OK a dolog, de ADOTable esetén ez a bookmarkosdi nem igazán jön össze valamiért.
A konkrét megoldandó probléma egyébként annyi lenne, hogy van egy ComboBox és Button. Ha a Button-re kattint a user, akkor a ComboBox feltöltődik egy ADOTable segítségével hivatkozott adattábla első mezőjének adataival.
Ha tudnál segíteni, klassz lenne. Köszi!

(#1062) <Adamsky> válasza wolffy (#1061) üzenetére


<Adamsky>
nagyúr

'' ADOTable esetén ez a bookmarkosdi nem igazán jön össze valamiért ''

Dobj fel egy újabb ADOTable-t, és használd azt a feltöltéshez (most hirtelen jobb nem jut az eszembe). Módosítottam a kódot (ld. link).

[Szerkesztve]

(#1063) wolffy válasza <Adamsky> (#1062) üzenetére


wolffy
aktív tag

Bocsi, valamit elnéztem, sikerült újabb ADOTable feldobása nélkül is. Működik a dolog ahogy kell, viszont még valamit nem vettem figyelembe. :( A hivatkozott mezőben ugyanaz a rekord többször is előfordul. (pl. egy típusmegnevezés akár 40-szer előfordulhat, mivel két készülék típus lehet ugyanaz, a gyári szám különbözteti meg őket, ami egy másik mező) Na lényeg a lényeg, hogy érhető el, hogy ugyanaz a rekord csak egyszer szerepelje a ComboBox-ban?

(#1064) wolffy válasza wolffy (#1063) üzenetére


wolffy
aktív tag

Hát nem egy nagy programírás, de a probléma megoldására dobtam még egy ADOTablet-t ami egy külön táblára hivatkozik amit a lehetséges típusnevekkel töltöttem fel. Így tuti, hogy egy név csak egyszer jelenik meg. :) Én jobb megoldást nem tudtam rá. (Egyéni szegénység tudom.)

(#1065) <Adamsky> válasza wolffy (#1063) üzenetére


<Adamsky>
nagyúr

Elvileg talán a DBTable-t is le lehetne vhogy. szűrni, hogy mindent csak egyszer írjon ki, de ez most nem jut eszembe. Helyette próbáld meg SQL Query-vel (módosítottam a demo.zip-et).

(#1066) wolffy válasza <Adamsky> (#1065) üzenetére


wolffy
aktív tag

Na igen, így is lehet. :) Én is gondoltam az SQL-re de nem is volt rossz ötlet az új tábla a lehetséges típusnevekkel, mert így már a felvitelnél is tudom a usert kényszeríteni egy DBComboBox-szal, hogy a típusneveket egyféle formában vigye fel. (Ne legyen az egyik kis-, a másik nagybetűvel, vagy keverve.) Lot of thanx a segítségért!!!

(#1067) <Adamsky> válasza wolffy (#1066) üzenetére


<Adamsky>
nagyúr

''Lot of thanx a segítségért!!!''

Nincs mit!

Remélem nekem is fog tudni majd valaki segíteni. [link] :U

(#1068) wolffy


wolffy
aktív tag

Tud-e valaki megoldást?
Van egy programom, ami ADOTable alapján hivatkozik egy Access (*.mdb) adatbázis egyik táblájára. Nem tudok rájönni mi lehet a hiba, ugyanis nem mindig jelentkezik a dolog, de jobbára időnként akkor jön elő, amikor a kész program használata során új rekordot veszek fel (append eljárással). Ekkor egy hibaüzenet kinyögi, hogy ''xy table not in edit or insert mode''. Mi okozhatja ezt a jelenséget???

(#1069) d-j


d-j
csendes tag

Sziasztok!

Nekem is ADO-s programmal kapcsolatosan van egy kérdésem. Nem tudom hogyan valósíthatnám meg a következőket:
Van egy ACCESS adattáblában néhány mező, mely ADO-val van egy Delphi-s progihoz kapcsolva. Az egyik mező a sok közül az azonosító tárolására szolgál. Lehet két egyforma azonosító, azonban ekkor a státusz mező adattartalma eltér a rekordban. Mikor új rekordot vesz fel a felhasználó, a progin keresztül és megad egy már létező azonosítót akkor nyögni kéne a programnak egy üzenetet a képernyőre, hogy xy azonosítómár van felvéve, yx státusszal.

Légyszi aki tud segítsen ennek megvalósításában! Nagyon fontos lenne! Köszi!

(#1070) Metalwarrior


Metalwarrior
tag

Helló!

Meg lehet azt oldani delphiben, hogy egy adatbázisból kiolvassa, hogy pl. februárig ki fizetett be az összeget, aki meg nem fizetet annak küld e-mailt?

(#1071) Diskcopy válasza Metalwarrior (#1070) üzenetére


Diskcopy
tag

Hi! Ez csak egy sima sql-es lekérdezés. Lekérdezed az adatbázisból az olyan mail címeket, ahol a dátum későbbi mint február az akt évnek és fizetett. Ha az sql-t nem ismered, akkor sem túl nehéz.. select ez, meg az, meg amaz from táblánév where dátum dátumfeltétel, és fizetve. pontosan nem tudom megmondani, mivel nem ismerem a tábládat, tábláidat, lehet joinolni is kell, ha többen van. Utánna a mail küldés sem nehéz, smtp komponenssel,vagy akár beépített levelezővel. Keress rá neten: Delphi mail send. sok példa lesz előtted.

(#1072) Metalwarrior válasza Diskcopy (#1071) üzenetére


Metalwarrior
tag

Köszi a választ. Közben sikerült Outlook segítségével.

(#1073) Metalwarrior


Metalwarrior
tag

Újabb gond.

if cikk.FieldValues['mail';]='xxx@x.x' then ennek a rekordnak a betűi más színnel legyenek kiírva.

valahogy így dbgrid1.ez a record.font.color:=szín

(#1074) Diskcopy válasza Metalwarrior (#1073) üzenetére


Diskcopy
tag

[link] DbGrid színezés sok példával.

(#1075) Metalwarrior


Metalwarrior
tag

nekem pontosan arra a példára kell megoldás. A kegyetlen jó angol tudásommal nem sokra megyek azzal a linkkel :O

(#1076) wolffy válasza Metalwarrior (#1075) üzenetére


wolffy
aktív tag

Ha jól értem, valami ilyesmire van szükséged:

procedure Tform1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if DataModule1.Table1.Fields[0].Value='x@y.com' then
DBGrid1.Canvas.Font.Color:=clRed;
end;


Ez egy eljárás ami egy formon elhelyezett TDBGrid, DrawColumnCell eseményére van ''ráhegesztve''. Ha az adott mező rekordja eleget tesz a feltételnek, akkor piros színt kap.

(#1077) Metalwarrior válasza wolffy (#1076) üzenetére


Metalwarrior
tag

DrawColumnCell procedura az honnan van. El kell valamit helyezni még a formon, vagy csak be kell gépelni?

(#1078) wolffy válasza Metalwarrior (#1077) üzenetére


wolffy
aktív tag

A DataControls komponenspalettán található DBGrid komponens Event-jei között találod az OnDrawColumnCell eljárást.

(#1079) Metalwarrior


Metalwarrior
tag

Ha a table1.DefaultIndex false-ra állítom a griden nem jelenik meg semmi, ha true akkor megjelenik a tábla, de nem tudja festeni

(#1080) corvin


corvin
csendes tag

Hello!
Delphiben irok egy programocskat, amiben szerepelnek képek díszítésként. Ezeket a képeket, szegélyeket ImageList-be raktam, ahonnan hívogatom....A gondom az,h a nagyobb (2294x19) képeknél, a projekt mentésekor v. a compilernél lefagy a program. Szükségem van ezekre a képekre, és nemszeretnék más módszert, mert mindent ImageList rendszerrel csináltam...:) A képeknek rontottam a minőségét is (kisebb memóriahasználat végett), de nem segített!
Help! :)

(#1081) Diskcopy válasza corvin (#1080) üzenetére


Diskcopy
tag

Miért nem teszed be a képeket egy resource fileba, aztán töltöd be futás közben, az ImageList ResourceLoad segítségével? [link] például.. Szal megszerkeszted szépen a Resource filet a képekkel, aztán meg {$R -el behívod, majd resourceLoad.Próbáld ki.

(#1082) Metalwarrior


Metalwarrior
tag

Már lassan kezdek idegesítő lenni :( , de még mindig van egy kis gond:
DBGridet DBGrid1DrawColumnCell segítségével festem. Mindent szépen megcsinál, de ha a gridet egy Pagecontrolba teszem akkor már nem csinál semmit.


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
If Table1.FieldValues['AREA';] < 1000000
then If Column.FieldName = 'Area'
then DBGrid1.Canvas.Brush.Color:= clAqua
else DBGrid1.Canvas.Brush.Color:= clWhite;
If gdFocused in State then DBGrid1.Canvas.Font.Color:= clred;
DBGrid1.DefaultDrawColumnCell(rect, DataCol, Column, State);
end;

(#1083) Metalwarrior


Metalwarrior
tag

Ez most komoly, hogy senki se akar segíteni? :O

(#1084) wolffy válasza Metalwarrior (#1082) üzenetére


wolffy
aktív tag

Hát nem igazán tiszta előttem miért nem műxik neked a dolog. Az elvileg nem kéne, hogy befolyásoló tényező legyen, hogy PageControl-on vagy Form-on van a DBGrid. Nekem is PageControl-on van és működik.
Talán próbáld ki, hogy mikor a Table1-re hivatkozol, a Table1 név elé beírod az adatmodul, vagy egyéb Form nevét és utána egy pontot, ahol a Table1 található. Ha nincs a Table1 külön adatmodulban, készíts egyet. Én mindig adatmodulba szoktam rakni. Most jobbat nem tudok.

(#1085) Metalwarrior válasza wolffy (#1084) üzenetére


Metalwarrior
tag

Már tényleg szemtelen vagyok.
Itt van a példa [link] amit csináltam, ha esetleg lenne időd és belenéznél, hátha van ott valami, amit elrontottam, és azért nem működik.

(#1086) wolffy válasza Metalwarrior (#1085) üzenetére


wolffy
aktív tag

Letöltöttem, este ha hazaérek megnézem.

(#1087) Metalwarrior


Metalwarrior
tag

Én barom. Az eventsben nem állítottam be. Már minden ok. Bocs, hogy ilyen hülyeség miatt írtam.

(#1088) wolffy válasza Metalwarrior (#1087) üzenetére


wolffy
aktív tag

Úgy van! Semmi gáz. Épp most néztem meg a letöltött anyagot és akartam visszaírni, mikor látom a válaszod. :) Örülök, hogy magadtól rájöttél. Legközelebb figyelj jobban. Majd szólsz ha elakadsz...

(#1089) Jégkokó


Jégkokó
veterán

Nekem most nagyon sűrgősen kéne segítség a delphiben.Nem tudja valaki, hogy honnan tudnám eltölteni,nekem jó a trial verzió is mert nem akariok vele komolyan foglalkozni.Ha valakinek lennének documentumai ilyen alap dolgokról és ezek megoldásával akkor annak nagyon örülnék. :R

A főnök tekintete mindig nyílt és őszinte. Vagyis egyik szeméből a nyilt gonoszság a másikból az őszinte rosszindulat sugárzik.

(#1090) Jégkokó


Jégkokó
veterán

Nem tud senki se , olyan programokat amikből meg tudnám érteni ennek az egésznek a lényegét?Nekem olyan kéne, hogy van a feladat és részletesen el van magyarázva, hogy mi kell csinálni meg ilyenek :F

A főnök tekintete mindig nyílt és őszinte. Vagyis egyik szeméből a nyilt gonoszság a másikból az őszinte rosszindulat sugárzik.

(#1091) sipis


sipis
csendes tag

Hogy lehet letíltani a billentyűzetet egy saját programnál.

(#1092) ollie válasza Jégkokó (#1089) üzenetére


ollie
MODERÁTOR

Van Delphi 2005 Personal, ami ingyenes otthoni és tanulási célokra. Sajna nem lehet letölteni, de átmásolhatod mástól, majd a Borlandtól legálisan lehet kérni regisztrációs kódot hozzá.

Hogy honnan tudnád megtanulni? Keress rá google-vel, millió oldal foglalkozik vele, még kezdőknek is. Remélem tudsz angolul...
Kezdésnek: [link]

***

(#1093) Jégkokó válasza ollie (#1092) üzenetére


Jégkokó
veterán

Az igazat megvalva eddig amit sikerült vele megcsinálnom, az az volt, hogy egy gombnyomásra kijöjjön a dvd meghajtó és egy másikra meg vissza menjen, és volt még egy kilépés gomb is.Nekem azért elsősorban magyar oldal kéne, mert ugy többet tudnék belőle tanulni :D

A főnök tekintete mindig nyílt és őszinte. Vagyis egyik szeméből a nyilt gonoszság a másikból az őszinte rosszindulat sugárzik.

(#1094) ollie válasza Jégkokó (#1093) üzenetére


ollie
MODERÁTOR

Talán itt: [link]

***

(#1095) mandrake83


mandrake83
csendes tag

Sziasztok! Van egy problémám amire biztos tök egyszerű a válasz, de valahogy nem bírok rájönni... Van egy listboxom amihez egy gombra kattintva különböző feliratú elemeket adok hozzá. ez így néz ki, pl.:

listbox4.items[listbox4.items.count]:=' valami '

Idáig semmi gond, megy is szépen. a gond a törlésnél jelentkezik amit egy másik gombra kattintva szeretnék előhívni. simán DeleteSelected()-el nem tudom törölni sajna, mert vizsgálnom kell azt is, hogy milyen feliratot törlök, ugyanis ez további folyamatokhoz vezet majd. Ha például a ''valami'' feliratú elemet törlöm akkor vegyen el egy számból mondjuk 10-et, de ha nem ''valami'' feliratú elemet törlök akkor ne csináljon semmit. (A listában mindenféle feliratú elem van, nem csak a ''valami'' feliratú). a törlés így néz ki:

for m:=0 to listbox4.items.count-1 do
begin
if (listbox4.selected[m]) and (listbox4.items[m]='valami') then
begin
listbox4.DeleteSelected;
szam:=szam+10;
end;
end;

A törlés működik és el is veszi a szam változóból a 10-et, de MINDIG CSAK AKKOR HA AZ UTOLSÓ ELEMET TÖRLÖM. Tehát 3 elemű listából a 3-at törlöm, majd a 2.-at, majd az 1-t akkor működik minden. De ha én a 3 elemű listából az elsőt akarom törölni akkor leáll a program a ''List index out of bounds(2)'' hibaüzenettel.

Remélem érthető voltam, és köszi előre is a segítségeteket, mert már fél napja gondolkozom és próbálkozok de nem jön össze.... :O

(#1096) g4dg3t válasza mandrake83 (#1095) üzenetére


g4dg3t
senior tag

A gond az h lepteto ciklust hasznalsz es a cikluson belul torlod az elemet.

Ha peldaul a 2. korben (m=1) torlod a 2. elemet akkor az utolso korben (m=2) a
if (listbox4.selected[m]) and (listbox4.items[m]='valami') feltetel hibat fog okozni, mivel az Items[m] (m=2) kifejezessel kimutatsz a tombbol (ugyebar a tomb az elozo torles miatt (n-1) elemszamu lett).

Vagy atszervezed a ciklusod, vagy kiegeszited a felteteled egy plussz vizsgalattal igy:
...
if (m < Listbox4.Items.Count) and (Listbox4.Selected[m]) and (Listbox4.Items[m] = 'valami') then begin
...

(#1097) mandrake83 válasza g4dg3t (#1096) üzenetére


mandrake83
csendes tag

Köszönöm szépen! Tökéletes a megoldásod! Tényleg köszi! :R
Működik is ahogy kell !!!!

[Szerkesztve]

(#1098) Jégkokó


Jégkokó
veterán

Engem az érdekelne, hogy hogy tudom azt megoldani, hogy az Edit 1 ben szereplő számot el tudjam osztani 8 al és ezt a edit 2 be szeretném ki irtatni :F

A főnök tekintete mindig nyílt és őszinte. Vagyis egyik szeméből a nyilt gonoszság a másikból az őszinte rosszindulat sugárzik.

(#1099) Jégkokó


Jégkokó
veterán

Nehogy már senki se tudja a problémámra a megoldást.Ezt nem hiszem el :F

A főnök tekintete mindig nyílt és őszinte. Vagyis egyik szeméből a nyilt gonoszság a másikból az őszinte rosszindulat sugárzik.

(#1100) Tele von Zsinór válasza Jégkokó (#1098) üzenetére


Tele von Zsinór
őstag

Egész szám? Arra ott az StrToInt, ha valós akkor asszem van olyan h StrToFloat (vagy hasonló, most nem vagyok delphiközelben), utána az osztást már talán tudod :)

Copyright © 2000-2024 PROHARDVER Informatikai Kft.