www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Delphi prvi koraki - 4.dan
Pojdi na stran 1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Pon Okt 01, 2007 7:25 pm    Naslov sporočila: icon_idea Delphi prvi koraki - 4.dan Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.43
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Tor Okt 02, 2007 6:55 am    Naslov sporočila: icon_idea Re: Delphi prvi koraki - 4.dan Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.65
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Tor Okt 02, 2007 10:44 am    Naslov sporočila:   Odgovori s citatom

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



tmp.JPG
 Opis:
 Velikost datoteke:  8.03 KB
 Pogledana:  5685 krat

tmp.JPG


Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Tor Okt 02, 2007 2:38 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.65
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Tor Okt 02, 2007 3:29 pm    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Tor Okt 02, 2007 3:57 pm    Naslov sporočila:   Odgovori s citatom

Ž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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.59
Kraj: Trzic

PrispevekObjavljeno: Tor Okt 02, 2007 6:08 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
urosg
Član
Član



Pridružen-a: Pet 27 Apr 2007 14:30
Prispevkov: 565
Aktiv.: 2.55

PrispevekObjavljeno: Tor Okt 02, 2007 8:56 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Tor Okt 02, 2007 9:23 pm    Naslov sporočila:   Odgovori s citatom

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.


Cool Enostavno, najlepša hvala. Na hitro probal dela Very Happy

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Sob Okt 06, 2007 7:08 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
urosg
Član
Član



Pridružen-a: Pet 27 Apr 2007 14:30
Prispevkov: 565
Aktiv.: 2.55

PrispevekObjavljeno: Sob Okt 06, 2007 10:19 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Ned Okt 07, 2007 1:10 pm    Naslov sporočila:   Odgovori s citatom

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. Wink (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 Wink )

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 Wink

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Tor Okt 09, 2007 8:30 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
urosg
Član
Član



Pridružen-a: Pet 27 Apr 2007 14:30
Prispevkov: 565
Aktiv.: 2.55

PrispevekObjavljeno: Tor Okt 09, 2007 8:44 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Sre Okt 10, 2007 8:49 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3  Naslednja
Stran 1 od 3

 
Pojdi na:  
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