Új hozzászólás Aktív témák
-
tusi74
őstag
Hát nagyon szépen köszönöm. Csak nekem a hozzászólásod megértéséhez
is kell pár óra. Nem nagyon értem.
Viszont annyira szorít az idő, hogy
addig fogok próbálkozni a beszúrásával egy kész kódnak, amíg nem megy.
Most találtam a neten egy párat.
Én annyira amatőr vagyok, hogy egy formon belül tudok eseményt kezelni, és
jó napot. Mint írtam nem volt tananyag az objektumorientált programozás, hála a jó istennek az államvizsga tételek között sem lesz. -
yksz
aktív tag
? Ez hülyeség: a Mastering Delphi 5 és a Mastering Delphi 7 c. könyvet lefordították magyarra, de a Mastering Delphi 6 c. könyvet nem. Pedig már meg is vettem volna. Mindegy maradok az angol verziónál
Fly away my precious knowledge fly far away
-
lao ce
aktív tag
egyebkent mar akartam irni hogy nagyon jol csinalod amit csinalsz. oszinten mondom, le a kalappal, buszke lehetsz magadra hogy ennyire hatarozottan vegigverekszed magad ezeken a dolgokon.
sajnalom hogy hosszu lett a hozzaszolasom, de ne becsuld le magad annyira, meghogy par ora... en oda illesztenem be a type-ot ahova irtam, keresd meg (ha akarod) az implementation alatt van.nicht kompot
-
tusi74
őstag
Hú köszönöm.
Most éjjel beillesztettem egy elég profit. Néztem a hozzászólásod, az alapján tényleg ment.
Innen töltöttem le:
Bővebben: link
Be is illesztettem, és a memo-ra vonatkozó dolgokat kiszedtem, mert
az én formjaimon nincs memo.
Most akkor ez forrásmegjelöléssel maradhat benne, mert ez a kód bárki részére hozzáférhető, és a program nem kerül kereskedelmi forgalomba?
Vagy rosszul gondolom? Ugyanígy beillesztettem egy olyat, hogy a StringGrid cellái, ha rákattintasz, akkor comboboxok lesznek. Az is szabadon hozzáférhető volt.
Most tartok ott, hogy fut a program, minden funkcionál, csak a help hiányzik. Megvettem neten a HelpScribble-t, csak nem nagyon megy még vele, de próbálkozom.
Addig eljutottam, hogy be tudom venni a témákat, de hova teszem a szöveget. A másik: Hogy csinálok altémát?
Na meg persze a dolgozat, amire maradt 2 hetem. -
Alan
aktív tag
lao ce nyomdokain továbbgondolkodva talán nem is véletlen, hogy ''fanatikus tag'' a státuszod ;) A kitartásod és az erőfeszítésed tényleg csodálatraméltó. És ezt nem úgy értem, hogy ''jól van pistike, nincs is kockafejed'', hanem komolyan.
Szerintem ha a unit-ok tetejénél kommentekben megjelölöd a forrást, az teljesen OK. Azért értsd meg nagyjából, hogy mit csinálnak, mert szerintem erre is rákérdezhetnek.
A HelpScribble-t nem ismerem sajnos. Talán lao ce igen ;)
Amúgy milyen helpet csinálsz? .hlp lesz a kiterjesztése vagy .chm? A .chm súgók modernebbek és megírhatod sima HTML-ben, képekkel, mindennel, aztán egy ingyenes fordító csinál belőle .chm-et. Egyetlen hátránya, hogy Delphiből nehéz kontextusfüggő súgóvá gyúrni, tehát hogy pl. legyen egy kis kérdőjel az ablakok címsorának jobb oldalán és a program minden gombhoz, kezelőszervhez külön súgótémát mutasson a kérdőjel megnyomása után. Ha csak sima súgó kell, ami pl. F1-re megjelenik egy külön ablakban, akkor ajánlom ezt a HTML-es technikát, elég hatékony. -
Hani
aktív tag
Helló, újra.
Köszönöm az eddigi tanácsokat, megfogadtam (pl. százezer zárójel, ill. Ini-feldarabolás).
Az & jel is megoldódott a && használattal, valóban - a hiba oka az volt, hogy a különféle gépeken különféle kódkészlet volt, és pl. az egyik (észt) karakterkészletben nem volt ilyen
Viszont eszembe jutott egy újabb dolog, amit mindig szerettem volna tudni.
Elvileg lehet egy-egy osztályhoz (Pl. TEdit) saját property-ket adni.
Csinált valaki már ilyet? (Most éppen egy három dimenziós tömbbel van megoldva, de olyan szép lenne..) -
lao ce
aktív tag
ingovanyos a tudasom ezen a teruleten, de valami ilyesmi:
type
...TSajat = class(TButton)
private
...FUzenet : string;
protected
...procedure MouseDown... override; // <- atvesszuk a hatalmat!
published
...// Uzenet property lathato kivulrol mint egy string
...property Uzenet: string read FUzenet write FUzenet;
end;
procedure TSajat.MouseDown...
begin
...inherited; // <- megcsinaljuk amit amugy is
...// es pluszban:
...if FUzenet<>'' then ShowMessage( FUzenet );
end;
szokas szerint nem probaltam kinicht kompot
-
Alan
aktív tag
Nyesed, lao ce, mint mindig ;)
Csak annyit hozzá, hogy ha a TEdit-hez hasonló osztályt szeretne az ember, akkor illik nem ebből, hanem a TCustomEdit-ből származtatni és csak a szükséges tulajdonságokat publikálni (így pl. ''el is rejthető'' a TEdit egy-két tulajdonsága).
Félek viszont, hogy a kérdezőnek komponensvágyai vannak, tehát hogy a saját osztályából egy ropogós friss példányt a TEdit helyett az egérrel feldobhasson a formjára, ahhoz viszont kell még egy-két dolog. Majd bekukkant és szól, ha így van
[Szerkesztve] -
_thomas_
tag
jó estét!
hogyan lehet a delphiben letörölni egy olyan könyvárat a vinyóról, amiben file-ok és alkönyvtárak is vannak?
előre is kössz!www.ironic-software.com
-
Hani
aktív tag
Hajh, Property-t szeretnék.
Azzal kezdődött, hogy volt max. 16 editboxom (mikor mennyi kell), aminek a tartalmát betöltöm egy sql scriptből. (betölt, szétdarabol, ellenőriz, berak .Text-nek)
Aztán meg kézzel kijavítom az esetleges elírásokat, nyomom a gombot, és már
menti is a megfelelö helyre.
De nem akartam menteni a dolgokat, csak akkor, ha valamit változtattam.
Arra, hogy változott-e a text, galád módon nem csináltam külön rutint, inkább az elején megadtam az eredeti szöveget .Text-nek is, meg .Hint-nek is, aztán hasonlítgattam a végén. Igen ám, de az mégsem jó így, mert később lett normál .Hint is, hát akkor legyen a HelpKeyword, azt itt úgysem fogom használni.
Persze mégis. Hát beraktam tömbbe.
Aztán jött az ötlet, hogy mennyivel szebb lenne saját property, ha már úgyis blokkban csinálom a dolgokat, With Sender As TEdit do begin... rendszerben.
Ki is próbálom majd jól a dolgokat, amint lesz rá lehetőségem. -
Alan
aktív tag
Aha, remek, akkor teljesen jó lesz lao ce megoldása, csak csomagot is kell készítened meg Register eljárástz írnod a Delphi-be való telepítéshez, no meg az esztétika kedvéért kell .dcr fájl is. Tudsz komponenst csinálni, ugye?
Ha nem kell telepíthető komponens, egyszerűbb az élet, viszont kódból kell létrehoznod a saját szerkesztőmezőidet a saját konstruktorukkal (pl. HaniEdit1 := THaniEdit.Create(Self)), aztán feltenni őket az ablakaidra (pl. HaniEdit1.Left := 123; stb., HaniEdit1.Parent := Form1). Ez könnyebb, de az a hátránya, hogy tervezési időben nem látsz semmit. -
Hani
aktív tag
Ez így teljesen jó - tervezési időben nem is sok látnivaló van egy editboxon
Persze már alapból a form is dinamikus, tehát nincs sok választásom - nagyon jó lesz ez így, ha sikerül. Épp csak ki kell próbálnom, ahhoz meg gép kell (ami viszont 20.-áig nem lesz - /Me zokogZokog.) -
Tangerine
senior tag
Miért van az, hogy a FindFirst (Findnext) megtalál részben passzoló könyvtárakat is, mikor nem kellene?
Kicsit érthetőbben:
var
sr: tsearchrec;
begin
findfirst('c:\temp\*.shn',faanyfile,sr);
end.
Az eredmény az, hogy találatnak veszi a 'c:\temp\konyvtar.shnf' könyvtárat de nem veszi találatnak a 'c:\temp\file.shnf' fájlt.
Mitől lehet? Bug? Egyszerűen nem tudom rávenni, hogy felejtse el a 'c:\temp\konyvtar.shnf' könyvtárat ha nekem csak a '*.shn' kell. És csak könyvtár esetében csinálja.
[Szerkesztve]Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
Tangerine
senior tag
Úgy látszik rosszul fogalmaztam, félreértettél.
Nem az a gondom, hogy nem tudom kiválogatni könyvtárakat/fájlokat, hanem az hogy miért ''illeszkedik'' a 'xxx.shnf' a '*.shn'-re? De csak akkor, ha az 'xxx.shnf' könyvtár? Teljesen illogikus.Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
KovacsUr
addikt
válasz Tangerine #319 üzenetére
Bocsánat, félreértettelek. Ez a FindFirstFile/FindNextFile API hibája (illetve a Microsoft szerint feature-je ). A legegyszerűbben úgy tudod kikerülni, ha összehasonlítod a keresett kiterjesztés hosszát a visszakapott fájl kiterjesztésének hosszával. Ha egyeznek, valódi a találat, ha nem, vakriasztás.
So it goes… We stand alone by standing stones and turn them into circles.
-
Tangerine
senior tag
-
Tangerine
senior tag
válasz _thomas_ #321 üzenetére
Szívesen.
Egyébként nem tudom, hogy ilyen alap dolgok miért nincsenek gyárilag benne a delphiben. Nem lenne nagy ügy beépíteni egy deltree függvényt. Ugyanígy nincsenek benne a crt-s alap függvények ami a pascalban van, és konzolproginál gyakran kellhet, pl. clrscr, keypressed, readkey, gotoxy, stb.
Na mindegy, szerencsére ezekre már mások is rájöttek, és megoldották, csak meg kell találni a neten, és beépíteni a progiba.Vacillálni, vagy nem vacillálni, ez itt a kérdés, vagy mégse?
-
KovacsUr
addikt
válasz Tangerine #322 üzenetére
Nem te találkoztál vele először, de azért azt nem mondanám, hogy ''ismert''... A Platform SDK-ban nem említik meg ezt a viselkedést, csak néhány eldugott Knowledge Base cikk foglalkozik vele. Ha szándékosan keresel, találhatsz is jó néhány programot, amelyek hibásan működnek, mert nem veszik figyelembe ezt a problémát.
So it goes… We stand alone by standing stones and turn them into circles.
-
BLiNk3r
senior tag
Hello!
Meg kell oldanom egy feladatot delphiben, amihez a segítségeteket kérem, mert egyedül nem tudok rájönni:
Készítsünk programot házi könyvtárunk katalogizálására! Tároljuk a könyvek szerzőit, címét, a vásárlás idejét és az árát! Az adatok tárolására használjunk típusos fájlt!
Ez a feladat. A grafikus felület készen van:
Bővebben: link
A probléma csak az, hogy a Bejegyzés gombra kattintva be kellene írnia a szerzőt, címet, stb-t a táblázatba.
Ha valaki tud segítsen plz! -
BLiNk3r
senior tag
UPP!
engem nagyon érdekel, biztos van itt vki hozzáértő -
GBX
aktív tag
a köv a megoldás. A gomb onclick eseményére be pötyögni hogy a grid celláiba (amire sor és oszlop indexel lehet hivatkozni) beirod az egyes editboxokból kiolvasott caption-okat. ha sikerült rendesen feltülteni a táblázatot, akkor ennek a grid obj. nek van egy savetofile eljárása vagy vmi ilyesmi, mivel e tipusos fileba menteted ki a tartalmát, és a gridnek van loadfromfile eljárása (asszem) ami pedig beolvassa a megadott file-t.
Remélem segitett.
[Szerkesztve]
[Szerkesztve]HiTech 486 DX4 120Mhz AMD, 24MB 36bit RAM, 800 MB Conner HDD
-
BLiNk3r
senior tag
kösz szépen a gyors választ, épp itt vagyok megakadva, hogy ez az oszlop és sorindex szerinti hivatkozás vajon hogy működik. Ha mondjuk bevezetek egy sorszam és egy oszlopszam nevű változót, a sorszam-ot a képen látható combobox-ban lehet állítani, de az oszlopszámot nem vágom hogy lehetne
-
GBX
aktív tag
a gridnek van egy olyan eljárása (függvénye) amivel az adott cella tartalmát (jelenleg string) meg lehet változtatni, az indexelés 0-tol kezdödik, bal felső sarok 0,0.
Sornak vegyél fel egy globális változót (legyen most SOR) amit minden Bejegyez lenyomására nővelsz +1 el. (de akár te is beállithatod mindegy, csak lehessen automatikusan feltölteni a táblázatot stb.. tudod felhasználóbarát sw )
Az oszlopoknál ugy kell hogy csinálni hogy asszondod hogy a konyv szerz. az a (0,SOR) indexen van és ide beirod annak az editboxnak a tartalmát, könxv cime (1,SÖR)......stbHiTech 486 DX4 120Mhz AMD, 24MB 36bit RAM, 800 MB Conner HDD
-
yksz
aktív tag
? Egy Buttonnak mivel lehet új OnClick Event-et adni a program futtatása alatt?
Fly away my precious knowledge fly far away
-
BLiNk3r
senior tag
Na sikerült megcsinálni, köszönöm szépen még1x a segítséget!
Már csak azt nem értem, hogy az miért van, hogy a táblázat fejlécébe, tehát a [0,0], [0,1],...cellákba szeretném beírni azt, hogy szerző, cím, stb. Ez egy FormCreate-ben van benne, de futtatáskor nem írja be, amit kellene.
De ha a bejegyzés gombra kattintáshoz írom ugyanezt, akkor már működik.
Így néz ki a problémás forrásrész:
procedure TForm1.FormCreate(Sender: TObject);
begin
stringgrid1.cells [0,0]:='Szerző';
stringgrid1.cells [1,0]:='Cím';
stringgrid1.cells [2,0]:='Vásárlás ideje';
stringgrid1.cells [3,0]:='Ár';
end;
Valami ötlet valakinek? -
Hani
aktív tag
Hümm.
És mit szólnál ilyesmihez?
(Persze a pontok nélkül - azok csak ''távtartónak'' vannak ott.)
Procedure TForm1.SajatEvent(Sender :Tobject);
Begin
... Edit2.Text:='a';
End;
Procedure TForm1.Button1Click(Sender: TObject);
Begin
... Button2.OnClick:=SajatEvent;
End;
Egy próbát megér.
Esetleg a SajatEvent után berakhatod zárójelbe a Sender-t. -
tusi74
őstag
Tud valaki olyan progit, ami átvizsgálja a kódot és a nem használt változókat Query-ket kiszűri? Mert nekem annyi ''szemét'' van a kódban, hogy kézzel is egy nap lenne. Minden futtatáskor alul egy egséz ''kisregény'' generálódik a a never used variable-król.
-
tusi74
őstag
Köszi. Hát akkor egyszer majd mikor egyéb munkára alkalmatlan leszek, akkor nekiállok.
Másik.
Hogy lehet azt megcsinálni a Rave Reportsban, hogy Kis Pista megtartott órái,
ahol Kis Pista az adatbázis név oszlopából érkezik, alatta a megtartott órái
pedig egy statikus Text. És ha Kis Pista teszem azt 5 osztályban tanít, akkor ne ilyen legyen a fejléce a beszámolónak:
Kis Pista
Kis Pista
Kis Pista
Kis Pista
Kis Pista
megtartott órái.
Rendkívül ronda. -
BLiNk3r
senior tag
Tudja valaki, hogy miként lehet adatot tárolni típusos fájlban?
Adott egy stringgrid, és abból a cellák értékét kellene elmenteni egy típusos fájlba, de fogalmam sincs, hogy hogyan.
Help! -
yksz
aktív tag
? ''Tegye fel a kezét'' az aki egyetemre jár!
Fly away my precious knowledge fly far away
-
lao ce
aktív tag
sajnos a rave reportot nem ismerem.
ha a select az jo csak egyszeruen tobbszor jon a nev a kulonbozo orak melle, akkor a riportban kell olyasmit keresni hogy suppress duplicates vagy ilyesmi. mondjuk en jobb vagy duplaklikkelnek a nev mezon, csak van valami property vagy options, aztan ott keresgelnek.
az is lehet hogy egyszeruen logikailag rosz helyen van a nev, nem detail bandra kell rakni, hanem group band szeru dologra -egy lepessel kifele. lehet hogy letre is kell hozni pluszban ezt a band-et. tanarbacsi adatai a groupbanden, orak neve a detail banden.
ha a select a ludas azaz ismetles van az eredmenysorok kozott, akkor distinct kulcsszo kell (select distinct tanarbacsineve, oraineve from....)
tisztogatas: csak megemlitem, hogyha duplaklikkelsz a warningra (vagy az errorra) a kurzor odaugrik ahol a felesleges valtozod van, es csak egy mozdulat kiszedni a sort...nicht kompot
-
lao ce
aktív tag
sajnos nem tudom micsoda az hogy 'tipusos' de tudom mi az a fajl
en vegigmennek az oszlopokon
for i := 0 to ColCount - 1 do
...grdSajat.Cols{i}.SaveToFile( fajlneve );
illetve betoltesnel
...grdSajat.Cols{i}.LoadFromFile( fajlneve );
persze, lehet hogy ez nem eleg tipusos sajnos
szerk: { } = szogletes
[Szerkesztve]nicht kompot
-
tusi74
őstag
Mint már régebben írtam, a szakdolimba pár internetről szedett kódot illesztettem.
Ma lejutottam addig, hogy mindről tudom, hogy mit csinál, csak leírni nem tudom.
Szinte mindig a Canvassal gyűlik meg a bajom.
Valaki megfogalmazná nekem, hogyan lehet szakdolgozatba illő ékes magyar egész mondatokat írni a canvasos utasításokról? Mi az a canvas?
Pl. Találtam egy eljárást, ami átmeretezi dinamikusan a szöveghez a cellákat.
A commenteket én írtam, szerintem jó.
with StringGrid1 do
begin
Canvas.Font := Font; {A megjelenített font:=StringGrid1 fontja}
for j := 0 to ColCount-1 do {Ciklus az összes oszlopra}
begin
max := 0; {Az oszlopban megkeresem a maximális hosszú szót (maximum kiválasztás tétele), és annak hosszához igazítom a teljes oszlop szélességét}
for i := 0 to RowCount - 1 do
begin
seged := Canvas.TextWidth(Cells[j, i]) + 8; {seged változóban tárolom a vizsgált j.edik oszlop
i-edik sorának szövegszélességet, meg adok még hozzá 8 pontot, hogy ne súrolja a szöveg a
rácsot}
if seged > max then max := seged;
end; { For }
if max > 0 then ColWidths[j] := max; {Ha a megtalált maximum 0-nál nagyobb, akkor ez legyen a j-edik oszlop mérete}
end; { For }
end; { With }
Azt értem, hogy a Font legyen a StringGrid fontja, de hogy jön ide a canvas?
Meg azt is értem, hogy a seged változó értéke legyen a StringGrid1 j.-edik oszlopának i-edik sorában a szöveg szélessége+8. A 8-at egyébként
miben mérjük? Pontban?
[Szerkesztve] -
yksz
aktív tag
? Van olyan parancs, vagy valami, amivel le lehet kérni és meg lehet jeleníttetni a képernyőn az FPS-t?
Fly away my precious knowledge fly far away
-
lao ce
aktív tag
tolem mindig valami bonyolultat olvasol.
- canvas-t nem tudom magyarul, de vaszon (festo) ha leforditod szo szerint.
- a nyolc az pixelben van. amolyan magic number, izles szerint.
- ez a kod iszonyu, ezert nehez erteni kicsit.
a TextWidth amire mi utazunk, es ez egy canvashoz kapcsolodik, tok mindegy hogy melyiket hasznaljuk. tobb canvas is van eppen hasznalatban, a stringgridnek es a formnak biztosan ott csucsulnek a canvasai.
ha csak ugy siman benyogi az ember hogy canvast ide vazze, akkor a form canvasat erti a delphi. de, ha with...do is van, akko' eloszor megprobalja, hogy ami a with-be van irva annak van-e canvasa ha igen akkor azt hasznalja. aki irta ezt a programreszletet nyilvanvaloan nem volt tisztaban ezzel.
namarmost.
Canvas.Font := Font
ez a sor hulyeseg. vedd ki a fenebe. megprobaltam leirni hogy miert hulyeseg, de inkabb 'gondolkozz rajta', mert 15 sor volt a magyarazat es en magam sem ertettem a vegen amit irtam...
tudod mit? atirtam neked, mert igy legalabb ertheto mi tortenik, ne mar 6 soron muljon.
// vegigmegy ket ciklussal a cellakon oszloponkent, kiolvassa a cella
// szovegenek szelesseget (TextWidth), eltarolja a legnagyobb erteket
// vegul beallitja az oszlopot a legnagyobb szelessegre
for j := 0 to StringGrid1.ColCount -1 do begin
...maxSzeles := 0;
...for i := 0 to StringGrid1.RowCount -1 do begin
......aktSzeles := StringGrid1.Canvas.TextWidth(StringGrid1.Cells[j, i]) + 8;
......if aktSzeles > MaxSzeles then maxSzeles := aktSzeles;
...end;
...if maxSzeles > 0 then StringGrid1.ColWidths[j] := maxSzeles;
end;
lefogadom hogy igy mar teljesen vilagos mirol van szo. sot, talan a tanarok is elboldogulnak velenicht kompot
Új hozzászólás Aktív témák
- -59% HP EliteBook x360 830 G7:i5 10310U,16GB,256GB,vil.MAGYAR bilI.,IR,13.3" Touch,100%sRGB,WWAN 4G
- Sony PS5 (1116A) + 2TB Samsung SSD bővítés a gyári 825GB mellett, két karral + venom töltőhub
- HP Laptop 15-fd051ne - ÚJ - 15,6" FullHD IPS notebook - Core i5-1335U, 8GB, 512SSD, Win11
- Brother DCP-L2532DW wifis, multifunkciós lézernyomtató
- HP Pavilion x360 14-ek Convertible - ÚJ - 14" TOUCH notebook - i5-1235U, 16GB, 512SSD, Win11
- Intel Core I5-8600
- Akció! Dell Optiplex 3080 Micro / I5-10500T / 16GB DDR4 / 256GB SSD /Windows11 Matrica BESZÁMÍTOK
- ASUS Radeon RX 5700 XT Dual EVO 8GB GDDR6
- Videoton AB 1010 autó hangszóró pár eladó a képeken látható állapotban. Mindegyik hangszóró működik,
- Ultra ritka Sound Blaster 1.5 2.0 klón Anchor Media Concept retró 8 bites ISA PC hangkártya
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs