 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.80
|
Objavljeno: Pon Okt 01, 2007 7:25 pm Naslov sporočila: Delphi prvi koraki - 4.dan |
|
|
Nadaljevanje te teme.
Imam narejenih več obrazcev. Recimo glavni obrazec se imenuje "test".
V njem napovem vse uporabljene obrazce .
Koda: |
implementation
uses unit2,unit3, test2;
|
Za vračanje z test2 pa:
Koda: |
implementation
uses test; |
Deluje vse kot je treba. A kako zaboga odstraniti obrazec test2? Če ga umaknem s sklica se prevajalnik začne pritoževati, ter ga sam doda nazaj.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.43 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Tor Okt 02, 2007 6:55 am Naslov sporočila: Re: Delphi prvi koraki - 4.dan |
|
|
Silvo je napisal/a: |
A kako zaboga odstraniti obrazec test2? Če ga umaknem s sklica se prevajalnik začne pritoževati, ter ga sam doda nazaj. |
Zaboga ga odstraniš tako, da v test-u nikjer ne kličeš nič iz test2-ja. Takoj ko kličeš potrebuje vključen še drugi razred.
|
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.65 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Tor Okt 02, 2007 10:44 am Naslov sporočila: |
|
|
Project > Remove from Project > (delphi ponudi vse kar je odstranljivo). Odstrani tudi vse reference na odstranjeno, kar je bistveno.
Delphi je tečno okolje. Kar je bilo avtomatično dodano, je potrebno avtomatično (na delphijevsko predviden način) odstraniti. Razni popravki na roke lahko (če se delphi ne upre) povzročijo nepredvidene efekte.
Določene stvari se nahajajo v unit-u, določene v project-u. Tako kot ima unit svoj uses stavek, ga ima tudi projekt. Odpreš ga tako, kot na priloženi sliki(view unit> Ime projekta ).
Jur
Opis: |
|
Velikost datoteke: |
8.03 KB |
Pogledana: |
5689 krat |

|
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.80
|
Objavljeno: Tor Okt 02, 2007 2:38 pm Naslov sporočila: |
|
|
Jur hvala, to je prava rešitev.
Citiram: |
Zaboga ga odstraniš tako, da v test-u nikjer ne kličeš nič iz test2-ja. Takoj ko kličeš potrebuje vključen še drugi razred.
|
Bil sem prepričan, da ne kličem ničesar, a očitno sem se zmotil. Ko sem form-o odstranil po Jurovem nasvetu sem, je prevajalnik težil, da mu nekaj manjka - sem res ugotovil na sem "hodil" po nekaj na tisto sporno formo.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.65 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Tor Okt 02, 2007 3:29 pm Naslov sporočila: |
|
|
Ko neko komponento (formo, gumb, labelo ali kaj podobnega) odstraniš (zbrišeš), bo delphi pospravil samo tiste stvari, ki jih je sam dodal. Če sam nekje v programu manipuliraš z komponento (na primer: label2.caption:='blabla'), bodo stavki, ki vsebujejo neobstoječo (pobrisano) komponento (labela v tem primeru) ostali. Prevajanje bo crknilo, ker se uporablja element, ki ni deklariran. Z ukazom Search > Find (v trenutno odprti datoteki) oziroma Search > Find in Files (pogleda vse datoteke) hitro najdeš in pobrišeš label2.
Mimogrede: delphi vse globalne spremenljivke (tiste, ki so deklarirane na začetku programa) inicializira. Številke postavi na 0 (a:=0), stringi so prazni (line:=''). Spremenljivke, ki so deklarirane kot lokalne (tiste v procedurah) pa imajo naključne vrednosti!! Vsebina spremenljivk je tisto, kar se nahaja trenutno v pomnilniku, kamor kaže naslov spremenljivke.
Primer napake:
procedure x;
var a:integer; //lokalna spremenljivka, ker je deklarirana v proceduri
begin writeln(a); end;
//lahko izpiše: -23882, ali pa 4756. Glede na navodila za uporabo je to pravilno.
Pravilno je:
procedure x;
var a:integer;
begin a:=7; writeln(a); end;
//izpiše točno 7
Jur
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.80
|
Objavljeno: Tor Okt 02, 2007 3:57 pm Naslov sporočila: |
|
|
Želim narediti neke vrste numerično tipkovico z gumbi za vnos v polje.
Ok, lahko kreiram eno javno spremenjivko tipa string prepisujem oz. prištevam recimo "caption" posamezne tipke v to spremenjivko. Za vsako tipko pa kreiram svojo odzivno proceduro. Kako bi šlo to narediti z eno odzivno proceduro OnClick?
Kako naj ugotovim katera tipka je pritisnjena?
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.59 Kraj: Trzic
|
Objavljeno: Tor Okt 02, 2007 6:08 pm Naslov sporočila: |
|
|
Silvo je napisal/a: |
Želim narediti neke vrste numerično tipkovico z gumbi za vnos v polje.
Ok, lahko kreiram eno javno spremenjivko tipa string prepisujem oz. prištevam recimo "caption" posamezne tipke v to spremenjivko. Za vsako tipko pa kreiram svojo odzivno proceduro. Kako bi šlo to narediti z eno odzivno proceduro OnClick?
Kako naj ugotovim katera tipka je pritisnjena? |
Ne vem, kako je to rešeno v delphiju, ampak v visual basicu se to naredi tako, da kontrole (v tvojem primeru gumbe) vse enako poimenuješ ter jim vsakemu dodeliš drugačen indeks (v bistvu narediš array kontrol). Vse kontrole si delijo iste dogodke, pri katerih pa dobiš kot parameter tudi indeks kontrole, na katero se nanaša dogodek.
_________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
urosg Član


Pridružen-a: Pet 27 Apr 2007 14:30 Prispevkov: 565 Aktiv.: 2.55
|
Objavljeno: Tor Okt 02, 2007 8:56 pm Naslov sporočila: |
|
|
Ce zelis evente deliti med kontrolami enostavno vsem kontrolam nastavi isti even (ne z dvoklikom ampak z izbiro iz spiska).
Paziti moras samo na SENDER ki ti omogoca dostop do komponente, ki je trenutno poklicala event.
Kar se pa branja pritisnjenih tipk tice imas vec moznosti:
1. vsaki kontroli dolocis event na OnKeyPress kjer imas potem KEY spremenljivko z ascii vrednostjo tipke
2. na formo nastavis KeyPreview na True in potem z eventom OnKeyPress na formi beres pritisnjene tipke (to pomeni da form dobi vsako tipko ki je pritisnjena na katerikoli kontroli).
Upam da ti kaj pomaga.
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.80
|
Objavljeno: Tor Okt 02, 2007 9:23 pm Naslov sporočila: |
|
|
urosg je napisal/a: |
Ce zelis evente deliti med kontrolami enostavno vsem kontrolam nastavi isti even (ne z dvoklikom ampak z izbiro iz spiska).
Paziti moras samo na SENDER ki ti omogoca dostop do komponente, ki je trenutno poklicala event.
Kar se pa branja pritisnjenih tipk tice imas vec moznosti:
1. vsaki kontroli dolocis event na OnKeyPress kjer imas potem KEY spremenljivko z ascii vrednostjo tipke
2. na formo nastavis KeyPreview na True in potem z eventom OnKeyPress na formi beres pritisnjene tipke (to pomeni da form dobi vsako tipko ki je pritisnjena na katerikoli kontroli).
Upam da ti kaj pomaga. |
Enostavno, najlepša hvala. Na hitro probal dela
Koda: |
procedure TForm2.Button14Click(Sender: TObject);
begin
if Sender=button14 then ShowMessage('A');
if Sender=button2 then ShowMessage('1');
if Sender=button3 then ShowMessage('2');
end;
|
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.80
|
Objavljeno: Sob Okt 06, 2007 7:08 pm Naslov sporočila: |
|
|
Ja, počasi sem "primigal" do baze.
Imam vprašanje glede objekta DBComboBox.
Če mu določim lastnosti, DataSource ter DataField prikazuje polje trenutnega zapisa.
Seznam spustenga polja je prazen. A obstaja kak že narejen (vrjetno?, sicer bi lahko uporabil običajni ComboBox), ali naj v odzivni proceduri FormCreate kreiram eno javno spremenjivko tipa tstrings ter prepišem iz baze v njo vsebino željenega polja?
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
urosg Član


Pridružen-a: Pet 27 Apr 2007 14:30 Prispevkov: 565 Aktiv.: 2.55
|
Objavljeno: Sob Okt 06, 2007 10:19 pm Naslov sporočila: |
|
|
Za to kar bi ti želel imaš DBLookupComboBox, kjer imaš potem poleg DataSource-a in DataField-a še "ListSource", "KeyField" in "ListField".
ListSource je izvorna tabela "spisek možnosti".
KeyField je polje v tej izvorni tabeli ki se polinka z vrednostmi iz polja DataField
ListField je pa polje, ki se prikaže v spisku.
Npr.
tabela:
Grupe:
ID - Integer
Naziv - String
Artikli:
ID - Integer
IDGrupa - Integer
Naziv - String
nastavil DBLookupComboBox za grupo artikla:
DataSource: ArtikliSource
DataField: IDGrupa
ListSource: GrupeSource
ListField: Naziv
KeyField: ID
Upam da kaj pomaga.
LP
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.80
|
Objavljeno: Ned Okt 07, 2007 1:10 pm Naslov sporočila: |
|
|
Uroš hvala, deluje.
Še vprašanje glede baz. Za začetek sem uporabil paradoxovo bazo, ki je opisana v knjigi. Po strukturi mi je najbolj domača, saj je zelo podobna dbasovi, katero sem uporabljal že pred 20-timi leti. (Poskusil sem tudi dbas-ovo, katero Delphi brez težav prebavi. Razlika med njima je v glavnem v tem, da ima dbas-ova ločene indekse. Iskanje zelo podobno, Clipper - Dbase je poznal "seek" ter "softseek" - Delphi uporablja "FindKey" ter "FindNearest" torej tudi v 20-tih letih ni dosti razlike )
Torej k vprašanju.
Imam bazo z recimo 100 000 zapisi, v kateri bi rad iskal nepopolen niz. Recimo '??A7?00' V Clipperju sem imel za tovrstno iskanje kreiranih recimo deset delnih indeksov po delu polja. Index1 je ideksiral polje po prvem, index2 po drugem index3 po tretjem karakterju ... Pred iskanjem sem najprej preverjal, kje začeti. V napisanem primeru sem vključil 3.index. Od prvega zadetka, do konca indexa pa sem potem v bazi iskal zaporedno. kako bi to izvedel v Delphiju. Obstaja kaka hitrejša rešitev?
PS
Uros, popravi default kraj v svojem profilu. Po odgovorih sodeč nisi od tam
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.80
|
Objavljeno: Tor Okt 09, 2007 8:30 pm Naslov sporočila: |
|
|
Malo se igračkam z bazami. DBF-jevo večjo bazo sem uspešno prepisal v paradoxovo, pri tem sem ustrezno pretvoril šumnike. Pri nadaljni rabi pa sem naletel na neprijetno presenečenje, ki bi pri resni aplikaciji lahko povzročila obilo težav.
Prišlo je do zasilnega zapiranja programa. Pri tem se je porušil index. Baze z pokvarjenim indexom, pa ni več možno odpreti. V Database Desktopu nisem našel kake možnosti glede obnovitve indeksa. Dobro, konverzijo sem še enkrat pognal ter tvoril novo bazo. Tega pa si ne moreš privoščit pri kaki resni aplikaciji. Obstaja v sklopu Delphija kako orodje (objekt) za tovrstno težavo? Še vprašanje glede indeksov. Žal zadeva ne zna indeksirat po Slo naboru. Je možno indekiranje recimo po delu polja?
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
urosg Član


Pridružen-a: Pet 27 Apr 2007 14:30 Prispevkov: 565 Aktiv.: 2.55
|
Objavljeno: Tor Okt 09, 2007 8:44 pm Naslov sporočila: |
|
|
za iskanje po delu polja uporabi SQL stavek "Select * from tabela where polje like '%iskalniniz%'" lahko da boš moral namesto % uporabiti * - uporabiš komponento TQuery.
Priporočam sicer da uporabiš kakšno drugo bazo kot paradox/dbase, mogoče za začetek uporabiš Access (ADO), seveda je pa vse odvisno od projekta.
Za paradox baze obstaja orodje TUtil (http://info.borland.com/devsupport/bde/utilities.html) tu so razna orodja za BDE.
Paradox sicer podpira tudi SLO indexe samo je potrebna nastavitev v BDEju.
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14677 Aktiv.: 61.80
|
Objavljeno: Sre Okt 10, 2007 8:49 pm Naslov sporočila: |
|
|
A v Delphiju obstaja kaka narejena funkcija za primerjavo dveh nizov od katerih je eden nepopoln.
Recimo primerjava '?B?DEF?H' z 'ABCDEFGH' bi morala vrniti true.
(? v primeru nadomestuje manjkajoči karakter)
Lahko bi v drugem nizu izbrisal karaterje, ki v prvem manjkajo ter niza primerjal recimo s funkcijo CompareText. Zanima me čim hitrejša metoda.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 7 dni
Powered by phpBB © 2001, 2005 phpBB Group
|