Új hozzászólás Aktív témák
-
tusi74
őstag
Most hogy a bőgést már befejeztem, összefoglalom a mai államvizsga élményemet.
Nagy kegyesen megérkezett a témavezetőm, aki az egész félév során oly sokat segített, hogy mással kellett elolvastatnom a szakdolim.
Azt mondta, mindent összekészít. Mondom, szeretném látni, még a védés előtt, hogy a fut a progi, meg minden. Ilyet szól, hagyjam készüljek csak!
Megbíztam benne, mégiscsak egyetemen tanít.
Elkezdődött a védés. EGY SZEPTEMBERI VERZIÓT TETT BE!!!! Semmi nem ment rajta, az még csak formok tervezete volt.. Kínos csend közöltem, itt a pendrive-om tegyük fel arról. Nem volt WinRAR kitömöríteni.
A net persze nem ment. Ezalatt a közjáték után elkezdtem vetíteni a prezentációt, amikor is mondták, letelt a rendelkezésre álló idő.
Most nem az, mert a végén 5-ös lett a diplomamunka, meg a védés is, gondolom, most befogták a pofámat, de így ledegradálni más munkáját. Az összes évfolyamtársam sokkal lazább témából írt. Látszott, hogy az én tudásomhoz képest nagy falat volt az Oracle+Delphi, de végigcsináltam. És akkor így belémtaposni. Egy államvizsgán rendelkezésre kellene állni minden eszköznek a zavartalan lebonyolításhoz. Valszeg ma még arra a winyóra, ahol ez megy kiadom a format parancsot, összetaposok minden CD-t, és azt is elfelejtem, hogy valaha ezt csináltam. Ott egy tanárnak, akivel nagyon jóba vagyok, mert nappaliról ismerem, mondtam, hogy én nem a jegyért csináltam, hanem mert bizonyítani akartam.
De azért köszi a szurkolást. Mától hivatalosan középiskolai informatika tanár vagyok. Papíron. -
tusi74
őstag
válasz
BatemanX #524 üzenetére
Mivel itt vannak a virtuális segítőim ide írom. Valójában Alan+Lao-Ce tudja miről
beszélek, de más válaszát is nagyon megköszönném.
Biztos emlékszenek itt páran még, én írtam a diplomamunkára a progit,
Oracle+Delphi. Most nagy nehezen előkerítettem a témavezetőm, aki bár
ismét nem segített, kiadta, mi kell a védésben:
1. Miért volt jó választás, hogy BDE-vel csináltam az adatkapcsolatot?
Ez nekem azért volt furcsa, mert ő mondta, hogy ezzel csináljam, aztán
még a fórumon is írta Lao-ce, hogy nem biztos, hogy ez volt a legjobb választás.
2. Miért használtam TStringGrid-et DBGrid helyett?
Hát mert azt mondta.
Szóval, ha lenne valakinek annyi ideje, hogy leírna legalább 1 érvet,
az sem baj, ha még magad se hiszed, hogy a BDE jó választás volt.
Ugyanígy a TStringGrid-re is kellene egy értelmes érv.
A válaszok már jöhetnek magánban, hogy ne legyen teljesen szétoffolva a topic. -
tusi74
őstag
Tegnap végigcsináltam a tesztelést.
Viszont most derült ki, ha az adatbázisba loginolás-nál Cancelt nyomsz, vagy rossz jelszót írsz be, akkor exception error-ral kilép. Hiába írtam, az első form indulásához, hogy try database1.open except close., nem azt csinálja, hogy kilép, hanem elkezdi megcsinálni a következő formot, és akkor jajveszékel, majd jól le is fagy. Ezt azért lenne még ma valahogy megoldani, mert akkor beleírnám, mert ma már a nyomtató fogja kidobálni a lapokat. -
tusi74
őstag
Na van egy ötletem.
Csinálok egy újabb formot, és azon elhelyezek 3 DBGrid-et, és azok ''online'' mutatnák a megfelelő táblákat. És azzal bemutatom az SQL tesztelést.
Ez színvonalas valamennyire.
Ez a teszt form minden form mellett megjelenne, persze az eredeti project más néven mentett verziójában, és állandóan mutatná a táblákat. -
tusi74
őstag
-
tusi74
őstag
Azt mondták idegen géppel nem lehet az ELTE hálójára felcsatlakozni.
A kedvemért!!! bevisznek egy gépet a terembe, amire én!!! előre felinstalláltam az Oracle-t, mindent beállítottam, a nevemet a gépre felragasztják és az államvizsga reggelén rendelkzésre áll. Na ez egy szép műsor lesz. Olyan ValóságShowt lehetne belőle csinálni, hogy nagyobb lenne a nézettsége, mint amikor Zalatnay bevonult a börtönbe. ''48 óra Tusi Oracle-t telepítésére''. Szerintem nagyon jó buli lesz. Viszem a kinyomtatott fórumot.
-
tusi74
őstag
Csinálom rendületlenül a Copy Generaly holnap is nyitva van 7-től-12-ig.
Sőt vasárnap is. Csak ne lenne az a fránya vizsgám 6-án. Köszi azért.
Örülök, hogy így belelkesedsz, és annak is, hogy nem bántottalak meg, hogy nehéznek találtam, amit írtál, bár nagyon profi, csak nekem nehéz. Én csak light-osan tesztelek.
Szerintetek a védésnél majd jól lefagyasztják, én pedig égek, mint a Reichstag?
Szerkesztve: ''Te ismersz tesztelési módszertant és ezt ők is lássák.''.
Miután Te és Alan fél délután próbáljátok megmagyarázni, igen hát így is mondhatjuk, ismerem. De azért majd ezt a témát elkerülöm, ha csak bele nem kérdeznek.
[Szerkesztve] -
tusi74
őstag
Nagyon szépen köszönöm, megkaptam, már én is válaszoltam.
A tieddel csinálom végül is, mert bár Alan-nak is nagyon köszönöm,
az övének egy része kivitelezhetetlen. Legalábbis ilyen bénácskának.
Hogy teszteljem más op. rendszeren, mikor én egyedül nem tudom átvinni az adattáblákat más gépére, max, ha újra megcsinálom. (még azt sem tudom, hogy hogy futtatom a védésnél, mert az itthoni szervert 2 napig telepítettem, és egyszercsak működött. De hogy hogy, azt nem tudom. Ugyanígy fórumosok magyarázgatták, míg meg nem unták, hogy ebbe és ebbe a fájlba írd át ezt és ezt a sort. Na de ez a jövő zenéje, még van 4 hetem ezen agyalni.)
Nem tudok máshonnan a saját gépemre bejelentkezni, úgyhogy a máshol kipróbálás, az is egy jó nagy mese lenne.
Ezeket az SQL teszteléseket metódus teszteléseket le tudom írni.
Már csak az nem világos, hogy hogy bizonyítom be, hogy úgy történt? Screenshotokkal? Pl. Amikor 1-et lépett az előzőhöz képest a dolgozó kód, akkor az jó, hogy a kiinduló állapotban az utolsó dolgozó kódja 16-os volt juhhé, már 17-es! Tehát jól működik.
Mert én mindig az SQL Explorert használtam valójában. -
tusi74
őstag
Köszi, ezt most szépen beleapplikálom.
Mi csak olyat tanultunk, hogy Pascalban mondjuk van a bemenet, és azokra bemeneti feltétel, mondjuk nem lehet negatív. És ha felhasználó mégis negatívat visz be, akkor írja ki, hogy negatív nem lehet, és hurrá nem lehet. És ez volt a teszt.
Csak DOS-os progikat írtunk, nagyon primitíveket. (Még én is 5-ös voltam, úgyhogy túl bonyolult nem lehetett).
Ránk is igaz, hogy leperkáltunk 5 féléven keresztül a másoddiplomás levelezős képzésért nem kevés pénzt, általában a legleamortizáltabb tanárok tanítottak, terem általában nem jutott, úgyhogy egy óriási gépteremből választottak le székekkel egy területet ott ültünk, mellettünk a nappalisok hawaioztak, mi meg minden 3. szót értettünk, ha a tanár elég hangosan túl tudta üvölteni a zajt. Általában nem sikerült neki. Nálunk, mint bukás nem létezik, maximum 5-6-7-szer megpróbálod, természetesen újabb X Ft leperkálása után, de olyan, hogy lemorzsolódás nem létezik, max, ha anyagilag nem bírod.
És a végén kapsz egy diplomát. Ha végig csináltad, tuti. Én a magam részéről akkor még 28 évesen azért vágtam bele, hogy egy jobb álláshoz jussak, és ha megkérdezik, pontosan mihez is ért, legalább egy szakterületet meg tudjak jelölni, na ehhez. Hát az nem jött össze, csak a családi költségvetésből hiányzik egy 7 jegyű szám. Na be is fejezem, mert megint felmegy a pumpa, mint a témavezetőmmel kapcsolatban. -
tusi74
őstag
Egy vállalkozó szellemű delphi-hez értőt keresek, aki nagyvonalakban elolvasná a diplomamunkám fejlesztői dokumentáció részét, és az ökörhibákat, kijavítaná.
Szerintem egyébként nincs benne túl sok.
Teljesen magamra hagyott a témavezetőm, én pedig ki szeretném nyomtatni, és pénteken beköttetni, mert 6-a a határidő, de jövő héten vizsga+dolgozom.
Viszont úgy azért necces, hogy senki sem olvasta el. Mostanában így emberben nem csalódtam, mint a témavezetőmben. MInden csoporttársam legalább 3x konzultált a sajátjával, elolvasták nekik, engem pedig se kép se hang magamra hagyott.
Aki ezt vállalja, annak elküldeném mailben. Előre is köszönöm. -
tusi74
őstag
Így legalább most neked fognak legalább annyit segíteni az okosok, mint nekem segítettek.
Nem tűntem el, csak visszamentem a régi törzshelyeimre:
Pl. Bővebben: link -
tusi74
őstag
Végül is nem ittam, csak jól kialudtam magam. Azért az itt lévők miatt nem ment volna. Nagyon köszönöm.
Szerencsére a Pepsi Max is light-os.
Nekem az a bajom, hogy teljesen pánikba esek, ha valami nincs leírva lépésről lépésre. Állandóan itt van mellettem, a Computerbooks-os Programozzunk Delphi 7 rendszerben. Ha le van írva, amit akarok, akkor hurráá, ha nem, jön a depi.
Meg van még egy jó könyv, a Benkő Tiborné Programozási feladatok és algoritmusok Delphi rendszerben. Ebből komplett eljárásokat adaptáltam magamnak, pl. gombnyomásra egyik listbox-ból kerüljön át a másikba, eddig benn volt a könyvben, de hogy az eredetiből törlődjön ki, azt már én írtam meg annak alapján. Nagy volt ám az öröm, ha ilyen kis dolog működött. -
tusi74
őstag
MEGY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Köszi a linket. Be kellett állítani a Rave-en belül is a paramétert.
Minden megy a programban.
Mindenkinek nagyon köszönöm.
Én soha életemben nem ittam alkoholt, csak szilveszterkor, de most olyan szívesen berúgnék. Ma pl. még nem ettem. Reggel 8 óta csak WC-re álltam fel, és benyakaltam 4 liter PepsiMax-ot. És ez már nov. eleje óta így megy. -
tusi74
őstag
Most jövök rá, itt nincs olyan, hogy report from, az a Quick Reportnál van.
Itt úgy van, hogy fellteszel 3 komponenst a fromra, rvSystem, RvProject, RvQueryConnection. Ezeket összecsatlakoztatod, beállítod a megfelelő query-t, amit használjon, majd a Rave Reports nevű programban elkészíted a *.rav fájlt.
És ezt a *.rav-ot buttonClick esemény alatt futtatod.
Tehát ezt a szöveges mezőt nem látja a Delphi. -
tusi74
őstag
Undeclared identifier txtnev (átneveztem a text5-t
).
A dataview1-be a lekérdezés 4 oszlopa van betöltve.
annak nem része a szövegmező. (legalábbis szerintem).
Csináltam sreenshotokat, hogy az rvProject2. mögé.
Bővebben: link
Bővebben: link
Bővebben: link
Bővebben: link
Nem baj, hogy csípős a kedved, marha rendes vagy, hogy így próbálsz segíteni. -
tusi74
őstag
RvProject2.text5.text:=valamit, már a Compile sem fogadja el.- Ezzel kezdtem a próbálkozást, amikor kitaláltad, ezt, hogy sima szövegként tegyem fel a nevet.
Nekem minden az eredeti nevén van a szakdoliban. Szerinted az a védésnél cikis lesz? Az egyik formon több mint 50 query van. szeép sorban query1, query2, stb...
De ezt most a kedvedért átnevezem.
[Szerkesztve]
[Szerkesztve] -
tusi74
őstag
Na ezt most elsőre megértettem. Ilyen sem volt még.
Elvileg ezeknek a statikus text mezőknek text propertyjük van.
Arra nem jövök rá, hogy lehetne rá hivatkozni, mert a gyorssegítség (Leírom, hogy rvPorject2. és lenyílik, miből választhatok), nem ajánl fel ilyen opciót.
Még legjobban a SetParam hasonlítana.
Most addig eljutottam, hogy kivettem a nevet, mint Databand, helyette tettem egy Text5 nevezetű statikus text-et.
Azt nem engedi, hogy RvProject2.Text5:=Query18['nev'[/]
Most így néz ki a rave-t meghívó buttonClick:
Query18.ParamByName('nev').AsString:=nev.Text;
Query18.Open;
RvProject2.SetParam('text5',query18['nev');
RvProject2.Execute;
Query18.Close;
Ezt ha futtatom, akkor így lesz a fejléc: text5 megtartott órái.
Innen kellene valahogy folytatni, szerintem ez jó irány lesz, ez olyan megérzés.
[Szerkesztve]
[Szerkesztve]
[Szerkesztve] -
tusi74
őstag
A Rave terveztemnek képét itt lehet megnézni:
Bővebben: link (jobb oldalt lehet látni, milyen mezők vannak a Direct DataView-ban).
És az eredmény:
Bővebben: link
A lekérdezés, amiből a Rave készül:
select d.nev, o.osztnev, t.tantnev, tf.oraszam
from elek.ttantfeloszt tf, elek.tdolg d, elek.tosztaly o, elek.ttantargy t
where (tf.dkod=d.dkod) and (o.osztkod=tf.osztkod) and (t.tantkod=tf.tantkod)
and (d.nev=:nev)
Egyébként biztos valami egyszerű megoldása van, csak valami elkerüli a figyelmemet. -
tusi74
őstag
Nem kerülte el, a 345-ösben volt, csak azokat a dolgokat a Rave-ben nem találtam meg. Azon a képen, amit beillesztettem pár hozzászólással korábban, azon mi az a Duplex? Az a nyomtatásra vonatkozik, nem a Duplex supress, amit írtál.
Általában ahogy olvasom, hogy valaki valamit javasolt, rögtön csinálom.
Egyébként is napi 14 órát foglalkozom ezzel, már vagy 2 hete fizu nélküli szabin vagyok.
[Szerkesztve] -
tusi74
őstag
Ja és még nagyobb gáz, elveszett 2 hete a témavezetőm'' . Sem e-mailre nem válaszol, sem a telefonját nem veszi fel. 1 hónapja még abban állapodtam meg vele, hogy majd legalább egyszer elolvassa a beadás előtt, úgy hogy a hibákat legyen időm kijavítani. Nem mintha eddig hejde segített volna. Holott előre közöltem vele a játékszabályokat, hogy nem vagyok rutinos programozó. Még Ő mondta, hogy egy kihívás lesz neki velem dolgoznia, mert még nem volt tanítványa, aki abszolút kezdőként bevállalt volna ilyet. Ehhez képest, ha nincs ez a fórum, akkor még sehol sem lennék. De legalább kipanaszkodtam magam.
-
tusi74
őstag
Hát köszi a szurkolást, a végső beadás (hosszabítást kaptam), 2005. január 7.
Most screenshoton már mindent lefordítottam, és azt szúrtam be.
Sokkal nagyobb gáz ez a fejléc, de majd azt csinálom a védésnél, hogy ''véletlenül''
egy olyan embert mutatok be, akit direkt úgy viszek be előre, hogy egyszer szerepeljen. -
tusi74
őstag
Lenne még pár apró kérdésem.
Mivel nekem csak angol op. rendszerem van, és már nincs időm telepítgetni, aki használ Rave Reports-ot, meg tudná mondani, az alábbi kép magyarul jelenne meg egy magyar op.rendszeren?
A másik, amit már régebben kérdeztem, hogy lehet megcsinálni, hogy a Report-nál ha valakinek a nevét ''fejlécnek'' teszem akkor ne annyiszor jelenjen meg, mint ahányszor a lekérdezésben szerepel? -
tusi74
őstag
Amikor egy formról írunk, akkor ugye le kell írni a paramétereit.
Van ugye a neve, a Name propertyben megadott.
De hogy mondjuk a unit nevet.
Jó az a megfogalmazás, hogy ''a form által képviselt unit neve.''? -
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] -
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. -
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
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. -
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. -
tusi74
őstag
Ezt is így csináltam, józan paraszti ésszel, csak épeen nem működik.
Pl. a Private szót hibásnak találja.
Már ugyebár van benne egy type az editek, buttonok miatt.
Most akkor követeli, hogy annak a végére tegyek endet, holott addig nem volt.
Most akkor e-mögé másoljam oda megint type.... end?
Nagyon nem megy ez nekem. -
tusi74
őstag
Eddig én is eljutottam, csak nem jövök, rá, melyik kódot hová kell
copy-paste-zni, hogy működjön.
Eddig, ha így szereztem kódot, akkor egyértelmű volt, hogy melyik eseményhez
melyik eljárást kell írni. De most pl. Van külön type stb, és nem tudom beilleszteni
az én programomba.
type
TrecPrintStrGrid = Record
PrCanvas : TCanvas; //Printer or PaintBox Canvas
sGrid: TStringGrid; //StringGrid containing data
sTitle: String; //Title of document
bPrintFlag : Boolean; //Print if True
ptXYOffset : TPoint; //Left and Top margins
ftTitleFont : TFont; //Font for Title
ftHeadingFont : TFont; //Font for Heading row
ftDataFont : TFont; //Font for Data
bBorderFlag : Boolean //Print border if True
end;
var
recPrintStrGrid : TrecPrintStrGrid;
procedure PrintGrid(ArecPrintStrGrid : TrecPrintStrGrid);
var
iX1, iX2, iY1, iY2, iY3, iTmp , iLoop, iWd : Integer;
trTextRect : TRect;
begin
iWd := 0;
with ArecPrintStrGrid, PrCanvas do
begin
//Calculate Total Width of String Grid
Font := ftHeadingFont;
for iLoop := 0 to sGrid.ColCount-1 do
begin
if (TextWidth(sGrid.Cells[iLoop, 0])+5) < sGrid.ColWidths[iLoop] then
iWd := iWd + sGrid.ColWidths[iLoop]
else
iWd := iWd + TextWidth(sGrid.Cells[iLoop, 0])+5;
end; // for sGrid.ColCount
//Initialize Printer
if bPrintFlag then
begin
Printer.Title := sTitle;
Printer.BeginDoc;
end;
//Output Title
Pen.Color := clBlack;
Font := ftTitleFont;
TextOut(((iWd Div 2) - (TextWidth(sTitle) Div 2)), ptXYOffset.Y, sTitle);
//Output Column Data
for iLoop := 0 to sGrid.ColCount-1 do
begin
Font := ftHeadingFont;
iX1 := ptXYOffset.X;
for iTmp := 0 to (iLoop-1) do
if (TextWidth(sGrid.Cells[iTmp, 0])+5) < (sGrid.ColWidths[iTmp]) then
iX1 := iX1 + (sGrid.ColWidths[iTmp])
else
iX1 := iX1 + TextWidth(sGrid.Cells[iTmp, 0])+5;
iY1 := ptXYOffset.Y + ((TextHeight('Ag')+5) * 2);
iX2 := ptXYOffset.X;
for iTmp := 0 to iLoop do
if (TextWidth(sGrid.Cells[iTmp, 0])+5) < (sGrid.ColWidths[iTmp]) then
iX2 := iX2 + (sGrid.ColWidths[iTmp])
else
iX2 := iX2 + TextWidth(sGrid.Cells[iTmp, 0])+5;
iY2 := iY1 + TextHeight('Ag');
trTextRect := Rect(iX1, iY1, iX2, iY2);
TextRect(trTextRect, trTextRect.Left+5, trTextRect.Top+3, sGrid.Cells[iLoop, 0]);
Brush.Color := clWhite;
if bBorderFlag then FrameRect(trTextRect);
Brush.Style := bsClear;
//Output Row Data
Font := ftDataFont;
iY1 := iY2;
iY3 := TextHeight('Ag')+5;
for iTmp := 1 to sGrid.RowCount-1 do
begin
iY2 := iY1 + iY3;
trTextRect := Rect(iX1, iY1, iX2, iY2);
TextRect(trTextRect, trTextRect.Left+5, trTextRect.Top+3, sGrid.Cells[iLoop, iTmp]);
Brush.Color := clBlack;
if bBorderFlag then FrameRect(trTextRect);
Brush.Style := bsClear;
iY1 := iY1 + iY3;
end; // for sGrid.RowCount-1 do
end; // for sGrid.ColCount-1
if bPrintFlag then Printer.EndDoc;
end; // with ArecPrintStrGrid, prCanvas
end; { PrintGrid }
procedure TfrmSamp.buPrintClick(Sender: TObject);
begin
with recPrintStrGrid do
begin
PrCanvas := pbPreview.Canvas;
sGrid := stgData;
sTitle := 'Print of String Grid';
bPrintFlag := False;
ptXYOffset.X := 10;
ptXYOffset.Y := 100;
ftTitleFont := TFont.Create;
with ftTitleFont do
begin
Name := 'Arial';
Style := [fsBold, fsItalic, fsUnderLine];
Size := 14;
end;
ftHeadingFont := TFont.Create;
with ftHeadingFont do
begin
Name := 'Arial';
Style := [fsBold];
Size := 12;
end;
ftDataFont := TFont.Create;
with ftDataFont do
begin
Name := 'Arial';
Style := [];
Size := 10;
end;
bBorderFlag := True;
end; //with recPrintStrGrid do
PrintGrid(recPrintStrGrid);
end; -
tusi74
őstag
Na még egy kisebb kérdés. Szerintetek meg lehet azt oldani, hogy egy feltöltött StringGrid, ami egy keresés eredményét mutatja, egy ButtonClickre egy az egyben kinyomtatódjon, ugyanúgy táblázatos alakban?
Mert itt szórkozok a Rave Reporttal, de az még egy Query-vel is leég nyögvenyelős. Meg nekem nem tetszik az eredmény. -
tusi74
őstag
Ezt még én írtam régebben:
''Szinte minden megy benne, csak még azt csinálja, hogy betöltéskor betölti az 1. kódú dolgozót, az első sorszámú tantárgyfelosztást stb.
És akkor most eldicsekszem, megoldottam teljesen egyedül!!!, saját kútfőből:
Már volt egy gomb, a formon, hogy új művelet, ami azt tudja, hogy rákattintva
a form alapállapotba hozható, azaz minden mező kitakarítódik. Na mármost ezt az eljárást mögé másoltam a formshow-ban megírt frissítő eljárás mögé, és láss csodát frissül is meg tiszta is. Pontosan úgy működik, ahogy szeretném. -
tusi74
őstag
Köszi,
'' 'startup plus' kenyelmi szolgaltatas rogton az elso rekordot allitja be a kepernyon', ez az idezetem copyrightos ''
Ne félj, nem idézem, sehol, főleg nem a védésnél, mert arra nagyon adok, hogy
amiről csak 1 mondatot tudok mondani, vagy mástól hallottam, azt nem mondom, mert egy járulékos kérdésre már nem tudok válaszolni, és jól beégek.
Igyekszem a védésnél majd azokról a részekről beszéni, amit én találtam ki.
Viszont egy orosz lapon találtam egy kész algoritmust, hogy lehet a StrinGrid mezőiből ideiglenesen Combobox-ot csinálni. Ezt egy az egyben beillesztettem,
csak nem 1 oszlopra, hanem 4-re csináltam. Na ezt még azért át kell tanulmányozni, mert néhány részről nem pontosan tudom, mit csinál, és ha belekérdeznek, marha cikis lesz. Magamtól viszont nem említem meg.
Próbálkoztam a debug-gal, de képtelen vagyok megtanulni.
PL. Tegyük fel, hogy van egy while ciklusom, hogy
i:=0;
while...... do
begin
...
i+:=i+1;
end;
és az i-t szeretném figyelni. Akkor hova tegyem a breakpointot? Aztán mit csináljak, hogy lássam az i változását?
A Computerbooks-os Programoozzunk Delphi 7 rendszerben c. könyvet használom, meg pár ilyen algoritmusos könyvet, de ez sehol sincs leírva.
Van egy ilyen államvizsga tétel is, de gyakorlatban sosem csináltuk az egyetemen, hiába kértük az oktatót. Folyton azt mondta, nem lényeges, nekünk
sosem lesz rá szükségünk. (egyetemi képzés) -
tusi74
őstag
Valószínű, hogy elérkeztem az itt levők segítségével a dolim végéhez. Szinte minden megy benne, csak még azt csinálja, hogy betöltéskor betölti az 1. kódú dolgozót, az első sorszámú tantárgyfelosztást stb. Próbálkoztam már olyannal, hogy formcreate-ba beírom, hogy minden mező üres legyen (most ezt nem részletezem. ezt még én is tudom), , hogy a dkod-ot állítsa 0-ra, vagy állítsa olyanra, ami még nics benne (pl. max+1), és mégis. Ötlet pedig a 0-hoz konvergál szokás szerint.
A másik. Ez is valami hasonló gond lehet.
Megcsináltam, hogy elkezdesz beírni egy nevet a név mezőbe, megnyomsz egy gombot, és ha az ezzel kezdődő név benne van már, akkor minden mező kitöltődik. Na és akkor itt jön a poén. Beírsz egy nevet, ami tuti benne van, megy. Beírsz egy másikat, ami tuti nincs. Megy.
DE!!! Ha egy olyan ember után írsz be egy benne levőt, aki nincs benne, akkor már nem ismeri fel.
Nekem ebben az egész progi írásban hetek óta rejtély, hogy lehet az, hogy
írsz egy eljárást a ''felismerre'', írsz egyet a ''nem ismerre'', és akkor e 2 független eljárásnál számít, hogy mi volt előtte.
De most csak kiragadtam, egy példát, de végig ilyennel bajlódtam. Ezt viszont nem tudtam eddig kiküszöbölni. -
tusi74
őstag
válasz
CsendPenge #223 üzenetére
Rájöttem tegnap a megoldásra. EGYEDÜL!!!!
A formshow-ba kell beírni, hogy a Combox1-hez igazodjanak
a többi mező adatai.
Addig én ezt a combox1.Change-hez írtam, de úgylátszik, az
az első indításhoz nem elég.
És persze az összes formnál ki kell töltenem a formshow eseményeket.
Mondjuk az én fejemben az nem tiszta, hogy mikor kell a FormCreate, és mikor a FormShow-t kitölteni.
[Szerkesztve] -
tusi74
őstag
Úgy általában jellemző a progira, hogy közvetlenül az indulás után
másképp viselkedik, mint később.
Pl. írok egy eseményt combobox1.Change-re. Ez az indulás után nem működik.
aztán újabb elemet állítok be a Comboboxon, akkor meg tökéletes. Olyan, mintha az elején még nem élne az adatátvitel.
Erre valakinek ötlete? -
tusi74
őstag
Na újabb rejtély.
Táblát töltök combobox-okból.
Azt mondom, hogy
Query5.FieldByName('Dkod').AsInteger:=StrToInt(Combox1.Text);
vagy
Query5.FieldByName('Dkod').AsInteger := StrToInt(Combox1.Items[Combox1.Itemindex]);
A következő történik.
Megnyomom egyszer a gombot, ami beszúrná, akkor beszúrja
minden combobox 0. indexű elemét. Tök mindegy, mi van beállítva.
Megnyomom mégegyszer, akkor megcsinálja rendesen, amit én beállítottam.
Igen ám, de a rossz is bekerül a táblába.
Aztán minden megy jól, akármit átállítok, megy. Csak a program indulása után az első beszúrás csinálja.
Hát erre kíváncsi vagyok. -
tusi74
őstag
Na voltam a szakdolis tanárnál.
A megoldás a törlésre:
Beírod egy sima query-be, nem kell semmiféle UpdateSQL, hogy
delete from stb....
Amikor meghívod, akkor nem kell odaírni, hogy
query.Open, csak egyszerűen Query.ExecSQL. Ezt szerintem Te is így írtad még régebben, csak én folyamatosan Openeztem a query-t, aztán csodálkoztam, hogy nem megy.
Most szerencsére megy. -
tusi74
őstag
BDE az elérés. A szakdolis tanár szerint ez a legjobb, és ezt várja el.
Mindenhol azt olvasom, csak ezt ne használja senki.
Én az elején úgy gondoltam, hogy a hangsúly a diplomunkámnak az Oracle rejtelmei legyen, és majd összedobok valamilyen kezelőfelületet Delhiben DBEdit, DBGrid, stb. Ez szépen le is van írva egy könyvben nyáron ki is próbáltam, értettem is.
Közölte a szakdolis tanár, hogy ez nem egyetemi szintű így ezeknek a használatát nem engedi, csak sima edit, striggrid stb.
Igen ám, de mivel gyakorlatlan vagyok programozásban, annyi idő elmegy azzal, hogy a programot írom, hogy pont az Oracle specialitásokra nem fog időm maradni, még az Oracle-s könyvet ki sem nyitottam. Ezt nagyon sajnálom.
Most pl. néhány hozzászólással előrébb írtam, hogy nem töröl rekordot. Azóta sem, és a szakdolis tanárom sem tudja miért.
Igen ám, de holnapután assembly ZH, na az is egy szép műsor lesz, úgyhogy szakdoli félretéve. Abból is volt 2 gyakorlat, aztán hadd szóljon. Ez az ELTE lev. info tanári képzés. Delphi-t is is önszorgalomból nézegettem a nyáron, így mondjuk az eseménykezelés megy. Január 5 a beadási határidő, és mág a dolgozatból egy sor sincs megírva.
Csütörtökön megyek megint a szakdolis tanárhoz, kíváncsi vagyok, hogy mit mond. Múltkor mondom neki, hogy a frissítéshez kell a DbiSaveChanges(table4.Handel), mert olvastam prog.hu-n (mert persze addig az sem ment), aztán láttam rajta, hogy azt sem tudja, hogy eszik-e vagy isszák. Csak az a poén, hogy én sem, mert könyvben nem találtam meg. Csak a védésnél meg ne kérdezzék, mit jelent. -
tusi74
őstag
Én nem ezer éve csinálom, csak 2 hónapja.
Úgy kezdtem Delphi+Oracle-s diplomamunkába, hogy egyiket sem tanultam soha.
Ahhoz képest 2 hónap alatt, főleg a segítségeddel sokat fejlődtem. Ezért sok-sok köszönet.
Ezért lehetséges az, hogy még a mondatot sem értem.
Mi az, hogy ''gombnyomások kódjaira''? Láma vagyok én ám nagyon..
A franc gondolta, hogy mert imádtam az SQL-t, így belesétáltam a programozás rejtelmeibe. -
tusi74
őstag
Azóta van még egy nyűgöm, ami viszont rejtély.
Mondjuk módosítani szeretnék egy rekordot, egy táblában egy gombnyomásra,
vagy beszúrni.
Megcsinálok mindent, teljesen ugyanúgy, mint egy másik táblánál, direkt
Copy-Paste-zok, hogy ami eddig ment, az ezután is menjen.
Erre, most meg mindent úgy csinál, ha megynyomom a beszúr gombot,
akkor beszúrja a Combobox-ok 0. elemét, nem azt, ami aktuálisan be van jeölve, majd megnyomom mégegyszer, akkor beszúrja jól.
Hasonlóan: ha megnyomom a módosít gombot, akkor nem csinál semmit,
ha megnyomom mégegyszer, akkor módosítja.
Na kezdtem megörülni, hárha 2x kell megnyomni a törlés gombot, hogy menjen.
De sajna az egyáltalán nem megy.
Hát itt van az, hogy megáll az ész, és körbenéz.
[Szerkesztve] -
tusi74
őstag
Jaj bocs, annyira el vagyok varázsolódva. Egész nap ebből állok ki.
A végül magam vadásztam össze, hogy vagy applyUpdates, vagy Post, a kettő üti egymást.
A legrosszabb, hogy vettem egy csomó könyvet, még olyat is, hogy adatbáziskezelés Delphi-ben, stb, és nincsenek mintapéldák. Én ilyet még nem láttam.
[Szerkesztve] -
tusi74
őstag
Ez a query11:
select dkod, nev, helyseg from tdolg where dkod=:dkod
Ennek a Query11-nek pedig van UpdateObjectje-yUpdateSQL1, aminek a Delete
metódusába ezt írtam: delete from tdolg where dkod=:dkod
Látszólag meg is csináltam, mert írtam az eljárásba egy olyat, hogy
a végén ShowMessage('Kész vagyok!'); Ez mindig pillanatok alatt kijön, minden hibaüzenet nélkül. Namármost én ennek az UpdateSQL-nek kitöltöttem
az Insert és Modifí metódusát, és tökéletesen teszik a dolgukat.
[Szerkesztve] -
tusi74
őstag
Na nekem is akadt egy, immáron sokadszor.
Update SQL-lel meg tudom csinálni, az insert-et, és az update-t,
de nem megy a delete.
Ezt csinálom:
query11.ParamByName('dkod').AsInteger:=dkodja;
query11.Open;
query11.Delete;
{query5.ApplyUpdates;}
query11.Close;
Ha ebben benne van az ApplyUpdates, akkor nem működik, hibaüzenettel leáll, hogy nem tudja végrehajtani ''closed dataset''-en.
Ha nincs benne, akkor nincs hibaüzenet, csak éppen nem töröl ki semmit.
Ilyenkor mit lehet tenni? -
tusi74
őstag
Az előbbi problémát megoldottam.
Most egy újabb láma kérdés:
Hogyan lehet az megcsinálni, hogy egy formon egy gombnyomásra kiszámolok valamit és az eredményt egy másik formon fel szeretném használni.
Biztos nagyon egyszerű, de nekem mégsem megy.
[Szerkesztve] -
tusi74
őstag
Tegyük fel, hogy van egy query-m, aminek updateObjectje egy UpdateSQL.
Hogyan lehet átváltani Update módba? vagy delete módba.
Mert az megy, hogy hogy beírom, hogy query5.insert,
és akkor meghívódik az, amit az UpdateSQL insert propertyjébe írtam.
Ugyanígy megírtam a modify-t, és a Delete-t, de hogy lehet őket akítvvá tenni?
Mert olyan nincs, hogy Query5.Update, Query5.Modify?
Elég sürgős lenne. -
tusi74
őstag
UP
-
tusi74
őstag
Help.
-
tusi74
őstag
Gyorsan kellene segítség, mert ma éjfélig kell egy beadandó.
Hol keressem a Delhiben ezt a komponenst?
Mi a neve?
Tehát, hogy egyik oldalról át lehet húzgálni a másikra?
[Szerkesztve]
Új hozzászólás Aktív témák
Hirdetés
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen billentyűzetet vegyek?
- Autós topik
- Sorozatok
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- One otthoni szolgáltatások (TV, internet, telefon)
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Milyen belső merevlemezt vegyek?
- Béta iOS-t használók topikja
- Milyen program, ami...?
- További aktív témák...
- Easun iSolar SMW 11kW Twin Hibrid inverter // Dupla MPPT // BMS // WiFi
- GAMER PC : RYZEN 7 5700G/// 32 GB DDR4 /// RX 6700 XT 12 GB /// 512 GB NVME
- GAMER MSI LAPTOP : 15,6" 144 HZ /// i5 12450H /// 16GB DDR4/// RTX 4050 6GB/// 1TB NVME
- Manfrotto 055 magnézium fotó-videófej Q5 gyorskioldóval
- Sony ECM-W2BT
- ÚJ- Lenovo ThinkVision T24i-10 - 24" monitor - Számla, garancia
- BenQ PD-2700-U Monitor - Designer 4K 27"
- ÁRGARANCIA! Épített KomPhone Ryzen 7 5800X 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- TAVASZI BOMBA AKCIÓK! STEAM, UBISOFT CONNECT, EA APP, XBOX EREDETI KULCSOK 100% GARANCIA
- AKCIÓ! ASUS PRO WS W790E-SAGE SE alaplap garanciával hibátlan működéssel
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest