[ Aleksandar Ružičić @ 27.10.2004. 13:10 ] @
[1] - ListView - u MouseUp eventu imam kod koji mi izbacuje popup meni sa nekim stavkama o selektovanom item-u. E sad, imam problem kako da kada mi je selektovano vise itema kako da npr. znam indexe selektovanih itema i njihov broj (da bi napravio popup koji ima opcije Delete All, Remove All i Batch Rename)
[2] - Strings - negde sam naisao (cini mi se) na API funkciju koja uporedjuje dva stringa i vraca procenat podudaranja. Samo sto ne mogu da se setim gde, ako neko zna...
[3] - imam problem sa gotovim exe-om. Kada ga pokrenem iz VB-a i iskljucim sve normalno radi, ali kada ga kompilujem prilikom iskljucianja programa windows mi prijavljuje gresku (module <unknown>). U unload subu glavne forme imam:
Code:

Dim f As Form
For Each f In Forms
Unload f
Set f = Nothing
Next


Svaka pomoc je dobrodosla ... :)

Pozdrav svima!
[ mladenovicz @ 27.10.2004. 14:38 ] @
1)
Code:

Private Sub Command1_Click()
    Dim i As Long
    Dim Counter As Long
    
    For i = 1 To lvwList.ListItems.Count
        If lvwList.ListItems(i).Selected Then
            Debug.Print lvwList.ListItems(i).Text
            Counter = Counter + 1
        End If
    Next
    Debug.Print "Total Selected Items: " & Counter
End Sub


2) mozda ti ovo pomogne

3) unload u MDI aplikaciji treba da radis na sledeci nacin:

Code:

Private Sub MDIForm_Unload(Cancel As Integer)
Dim Frm As Form
   For Each Frm In VB.Forms
        If TypeName(Frm) = "frmMain" Then
            ' Self!
        Else
            Unload Frm
        End If
    Next Frm
End Sub
[ Aleksandar Ružičić @ 03.11.2004. 12:19 ] @
E sve radi, sem onoga sa unloadom. Cak sam pokusao i sa End, al nista, opet pokazuje poruku prilikom izlaska iz programa!
Ali evo sta sam prometio: Pokrenem moj program (taj sto mi pravi probleme) iz nekog drugog programa, evo koda:
Code:

Form_Load()
Shell "D:\MojiProgsi\MP3 Manager\mp3manager.exe", vbNormalFocus
Unload Me
End Sub

i moj program se pokrene, a pri izlasku ne prikazuje nikakvu gresku!?
Da li neko zna u cemu je problem? Ubicu se! Ceo kod (bar onaj deo sto sam dosad uradio) mi radi kako treba, samo kada iskljucim program Windows mi prijavljuje gresku!!!!
[ VRKY @ 03.11.2004. 12:28 ] @
I ja sam imao sličan problem (sa ostajanjem procesa u memoriji) a meni se to dešavalo kad se otvori drugi prozor i onda njegov proces ostane aktivan a proces glvane forme se ugasi bez problema, i nisam taj problem nikako mogao uklonit koristio sam :

Code:

Unlaod Me
End


Ali sam vidio da ima neko riješenje za to mislim da je o tome pričao degojs, ali nisam pokušavao.

http://www.elitesecurity.org/tema/67539/0#430551
[ mladenovicz @ 03.11.2004. 12:50 ] @
Proveri da li si unistio sve objekte koje koristis (Unload event forme, Terminate event klase).
[ Aleksandar Ružičić @ 09.11.2004. 13:20 ] @
Sve sam ih unistio! I opet nista! Prvo sam za svaku klasu imao
Code:

Dim clsxxx As New ...

pa sam onda pomislio da to ne valja (uostalom koja je razlika?) i u Form_Load (prvo) stavio:
Code:

Set clsxxx = New ...

(naravno prvo sam deklarisao sve te klase [bez new] u modulu) i unistio sam ih u Form_QueryUnload sa set = nothing, pa kad ni to nije radilo pokusao sam i u Form_Unload al opet nista!
Izbacio sam onaj deo za Unload all forms, jer su mi sve (sem glavne) forme modal,
gde mi trebaju ja pisem ovako:
Code:

Load frmTagEditor
frmTagEditor.Show 1, Me
Unload frmTagEditor

al opet nista!!! (poludecu od ovoga, majke mi!)

Bilo koji predlog?? Inace hvala za predhoden odgovore!

Pozdrav Svima!
[ mladenovicz @ 09.11.2004. 13:40 ] @
Koji SP za VB koristis?

Razlika izmedju
Code:
Dim clsxxx As New ...

i
Code:
Set clsxxx = New ...

je sto se u prvom slucaju objekat inicijalizuje tek kad prvi put pozoves neki njegov metod ili pristupis propertyju. U drugom slucaju inicijalizacija (Class_Initialize) se desava odmah
[ Aleksandar Ružičić @ 09.11.2004. 14:02 ] @
Kakve veze ima SP? Uostalom i ne znam gde se to gleda...
Ali evo sad sam poceo da skidam SP6 (ima da se nacekam sa ovom mojom vezom!) jer hocu da naucim rad sa bazama (treba mi za ovaj progy sto me muci)
[ mladenovicz @ 09.11.2004. 14:16 ] @
Jos kako SP ima veze. Dosta problema biva reseno upravo instalacijom najnovijeg SPa.

Help-->About VB
[ Aleksandar Ružičić @ 09.11.2004. 14:33 ] @
Pa i mislio sam da je tu al pise samo:

Version 8176 VBA Retail: 6.0.8176 Forms3: 2.01

Velika je verovatnoca (99.999999999999999%) da nemam ni jedan SP jer mi je disk sa kog sam instalirao VS malo mnogo star!
Al uostalom nema veze evo skidam SP6 al sada moram da prekinem pa da nastavim kasnije jer moram da uvatim knjigu u sake, imam sutra kontrolni iz fizike

Hvala!
[ mladenovicz @ 09.11.2004. 14:41 ] @
Pogledaj na vrhu about forme, a imas i na splash screenu kad pokreces VB

[ TheAlas @ 10.11.2004. 10:49 ] @
Da, pise ti u about-u, i verovatno imas stari SP4, ne mozes da nemas.
To ne garantuje resenje tvoj "delikatnog" problema, nesto si propustio, ako koristis subclassing neocekivano zatvaranje programa izaziva greske, ko zna sta je u pitanju. Probaj procesom eliminacije (brisi sumnjive delove koda sve dok ne otkrijes koji deo izaziva problem).
Ako malo detaljnije opises svoj program mozda i nadjemo resenje, za sada si samo opisao ono sto mislis da predstavlja problem, posalji malo vise tog koda, greske se pojavljuju na najmanje ocekivanim mestima .

A evo na brzaka kod za brisanje itema iz list view kontrole :
Code:

    Dim i&, c&
del:
    With lwList
        For i = 1 To .ListItems.Count
            If lwList.ListItems(i).Selected Then
               .ListItems.Remove i
               GoTo del
            End If
        Next i
    End With


[ TheAlas @ 10.11.2004. 10:55 ] @
A za poredjenje stringova koristi VBA biblioteku ako imas vb6, StrComp fukciju preciznije, pogledaj u ObjectBrowseru izmedju ostalog, citaj i MSDN artikle...
[ Aleksandar Ružičić @ 10.11.2004. 12:51 ] @
Pa reko ja da mi ne pise (samo VB6, bez SP-a)! :(

@TheAlas:
Pa koristim subclassing, za ogranicenje minimalne velicine forme (nasao sam na PSC) ali to koristim u svakom programu koji napisem i nj jedan mi ne projavljuje ni jednu gresku!
Da li moram da izbrisem sve iz ListView-a? Radio sam slican program koji ima ListView ali u njemu nisam brisao nista na izlasku?...
A posto sam i ja pomislio da je problem u subclassingu, izbacio sam taj modul ali opet nista!

Taj program (koji me muci) sluzi za rad sa MP3 fajlovima. Planiram da ubacim sledece opcije:
-Sort files (sortiranje pesama po folderima koristeci ID3 tagove) - uradjeno
-Edit ID3v1 & ID3v2 Tags (editovanje tagova, lyrics...) - uradjeno
-Find Duplicates (trazenje duplikata, eto sto ce mi taj procenat) - trenutno radim na tome
-Rip Audio CD (prebacivanje sa CDA u MP3 ili WAV)
-Manage List (rad sa m3u i pls listama)
-Catalogs (pravljenje kataloga pesama)

za sad mi nista vise ne pada napamet, polako, prvo zavrsim verziju 1 i ako dobro prodje bice jos bolji (program)!
[ TheAlas @ 10.11.2004. 14:46 ] @
1.) Posalji screenshot tog prozora koji prikazuje error
2.) Uradi error handle, sa "On Error" stvarcicom, probaj On Error Resume Next pa prouci sta se dogadja
3.) Ne mora kod da bude los, pogledaj da li neka activex komponenta (npr. neka 3rd party kontrola ti se nalazi na prozoru) izaziva gresku.
4.) Zatim pogledaj da nisi zabrljao optimizacije u Compile panelu prozora koji se aktivira komandom Project/Properties, u Advanced Optimizations prozoru sve treba da bude iskljuceno, sumnjam da je ovde problem, ali ko zna.
5.) Probaj da startujes taj svoj .exe pomocu "Run" komande (iz windows start menija), znaci ne iz explorera ili sl. browsera.
6.) Ako imas "staru" verziju visual studia, uradi update jer ce tvoji programi lose raditi na novim windows verzijama a jos losije ako su pravljeni pod istim.
7.) Jednostavno i najcesce resenje je: eliminacija. Brate, vb program moze da radi i sa 0 linija koda, iskoristi tu mogucnost i ukloni sav kod malo po malo sve dok ne otklonis gresku, kada nadjes to parce koda koje prouzrokuje error, proucavaj to i gledaj da zamenis to nekom boljom alternativom jer ocigledno sabotira ceo tvoj program. Ne postoji greska koja nastane tek tako - PUF, nesto si dodao u program, verovatno neki kod koji nisi sam napisao koji sada prouzrokuje bizaran error, to mogu biti samo 3 slova u nekom delu koda, a mogu biti i neke activex komponente. To ti kazem iz iskustva, sve ne-microsoft komponente nisu pouzdane osim ako ih sam nisi napisao, a ako je open-source nista ti ne vredi ako ne razumes kod i ne mozes da popravis eventualne propuste.
Stvari koje skidas sa PSC sajta mogu da izazovu greske, verovatno nisi ni svestan da si ti zapravo napisao samo 5% svog programa, i nadaj se da se greska nalazi u tih "bagovitih" 5%, greska moze nastati i u microsoftovim komponentama, i to POSEBNO ako "nemas" service pack, jer samo DLL koji sacinjava te osnovne komponente (ListView, ListImage, itd) ima daleko vise koda od tvog programa i ako je taj kod star kao sto kazes, toplo ti preporucujem update.

Ovo je sva pomoc za sada , javi sta si probao/uradio pa da vidimo dalje...
[ Aleksandar Ružičić @ 11.11.2004. 13:46 ] @
1.Evo slike mada ne mislim da moze nesto da uradi.

2.Imam error handler skoro u svim (samo oko 5% nema) funkcijama koji (negde) ne radi nista sem sto bezbedno izadje iz funcije npr:
Code:

Sub RemoveSelected()
On Error GoTo errh
...
Exit Sub
errh:
End Sub

3.Od ne microsoftovih kontrola koristim CCRPBrowseForFolder i CCRPStatusBar kontrole, a pored osnovnih i CCRP kontrola koristim comctl32 kontrole.
4.Prvo sam tu pogledao, cak sam isprobavao sve moguce kombinacije, P-Code, Native, sve optimizations sam isprobao, ali nista (sta je uostalom ovo P-Code, jedino sto sam ja primetio je da se program brze kompiluje, dok je razlika u velicini exe jedva primetna?)
5. Ne vredi . Prvi put kada pokrenem program i izadjem iz njega sve je normalno, a vec sledeci put mi pri izlasku prijavljuje gresku, ocito mi nesto ostaje u memoriji samo treba da pronadjem sta!
6.Pa evo jos 38% mi ostalo (mnogo mi brate spora ova veza!)
7.Mislim da cu morati to da uradim! Izgleda kao najbolje resenje. A ovo sto kazes oko 5% - nisam bas ja (vise) toliki pocetnik, od celog (dosadasnjeg)koda moj deo je nekih 20-25%


Hvala! Probacu sa eliminacijom pa cu da vidim sta me to zeza!

Pozdrav Svima!

[Ovu poruku je menjao krckoorascic dana 11.11.2004. u 14:56 GMT+1]
[ mladenovicz @ 11.11.2004. 13:55 ] @
Imas sublclassing za velicinu forme i gomilu CCRP kontrola. Ja sam gledao te kontrole pre nekog vremena i downloadovao neke sampleove. One koriste subclassing i kad treba i kad ne treba, ali dosta njih nije 100% stabilno (bar ono sto sam ja video). Ja sam gledao njihov subclassovan common dialog i to je pucalo ko ludo. Subclassing je prilicno za*ebana stvar . Ako ti subclassing za velicinu forme radi u drugim aplikcaijama (pretpostavljam koji kod koristis, taj je pouzdan), onda je sigurno problem u nekoj od CCRP kontrola.

P.S.
Ne treba ti browse for folder kontrola. Imas API za to.
[ Aleksandar Ružičić @ 11.11.2004. 14:05 ] @
Pa ni u jednom programu, do sad mi nisu pravili probleme ni status bar ni subclassing.

Citat:
mladenovicz
Ne treba ti browse for folder kontrola. Imas API za to.


Znam da imam API ali sa CCRP-om mogu da omogucim/onemogucim biranje nekog foldera koji ima/nema neku fajl(ove)...

A status bar koristim samo zbog progress bara
[ mladenovicz @ 11.11.2004. 14:15 ] @
Citat:
krckoorascic:A status bar koristim samo zbog progress bara :)


A sto ne bi koristio progress bar koji "setas" po formi?
[ TheAlas @ 11.11.2004. 19:58 ] @
Ok, priblizavamo se izvoru smetnji.
1.) Slika koju si poslao nam govori u cemu nije problem: tvoj program je u sustini OK, cim je modul <unknown> to znaci ili da greska lezi u nekom zakopanom dll-u, ili da ti je program totalno fucked-up, a sumnjam u to (u ovu drugu varijantu) .
Kada je subclassing error, obicno prijavljuje gresku u msvbvmxx.dll ili u tvoj_program.exe...
Lepo ti kaze i Madenovic, otarasi se tih kontrola, samo nevolje ti donose - ovo ti kazemo iz iskustva, koristi ih samo ako si jedan od developera tih CCRP kontrola tj. ako mislis da mozes da uklonis "smetnje" koje nastaju usled koriscenja istih. Opet, sve te kontrole koriste subclassing, a to sto ti subclassing nikada nije pravio probleme... ocigledno nisi pravio bas mnogo programa u glomaznom visual basic-u , salim se naravno, ali ovaj program sto sada pravis je ocigledno drugaciji od ostalih. Problem je sto VB NE PODRZAVA tzv. subclassing, on koristi SVOJ "jednostavniji" sistem za procesiranje poruka i svaki pokusaj da se te poruke preusmere tj. provere pomocu nekih apija je na neki nacin hakovanje jadnog vb-a, recimo ako pre izlaska iz programa ne preusmeris poruke ponovo na stari "callback" nastaje upravo onakva slika kakvu si poslao , samo sa "tvoj_program.exe" ili "msvbvm60.dll" itd. .

2.) Pomeraj progress bar po prozoru, zaboga, 99% programa to radi a samo 1% koristi neki ocx samo zbog progress bara (ili zbog bilo cega drugog, ako nista win32 ima bar dobar status bar . Poslacu ti primer ako hoces, kako da napravis status bar za trakicom za progres.

3.) Pogledaj na PSC sajtu i bolje ti je tamo da nadjes neku dobru zamenu za taj folder ocx, nadji neki jednostavan modul sa kodom koji ti je kolko-tolko razumljiv. Namuci se malo, pa cak i sam napravi neki jos bolji BrowseForFolder, videces da ce se isplatiti, lep je osecaj kada znas da si ceo program sam napravio (koliko je god u vbu to moguce). Ako imam vremena, poslacu ti i primer za ovo ... zapravo prijavi se na PSC mailing listu, naucices dosta sa tog sajta, ja imam dosta svojih primera tamo. Zato volim vb, jer je prost ako znas c++/c, pa mogu i ja nekog da naucim necemu .

Ovo su saveti ne samo za popravku ove greske, nego i za izbegavanje buducih greska (greska ne mora da bude i neki error koji ti iskoci na ekranu...), racunam da je proslo onih 38% pa se nadam da si vec resio problem . Ako je problem jos uvek prisutan ostaje ti najbolje resenje - eliminacija, ako ne mozes da nadjes bubu, izbaci sav namestaj iz stana i videces iz koje je rupe izasla .
[ Aleksandar Ružičić @ 13.11.2004. 20:29 ] @
Evo instalirao sam SP6 i.... NISTA! Ali dobro je da imam najnovije dll-ove.
Resio sam da poslusam vase savete; prvo cu da napisem svoje ocx kontrole - StatusBar (s progressom) i DialogOCX (Open file, save file, BrowseForFolder - obicno koriscenje API funkcija iz API-Guida) i da uklonim sve kontrole koje nisu moje. Subclassing koji koristim je vec isproban i dobro mi "hakuje" progy, jer prvo sam to izbacio i nista se nije promenilo (znaci nije problem u tome), pa sam onda vratio taj modul...
A nosim se mislju da napisem program iz pocetka jer sam ja odjenom nagurao nekoliko klasa a nisam svaku pojedinacno proveravao. Nasao sam na PSC primer kako koristiti plugin-ove (preko ActiveX Dll-a), pa sam pomislio da napisem (relativno mali) kod koji ce da koristi takvu vrstu plugin-ova. Ova ideja i nije losa (a mislim da bi mogao da je sprovedem u delo ) jer ne bi morao da radim cesti update programa (sam napisem jos koji plugin), ali nju cu ostaviti kao krajnje resenje (sto manje koplikovanije - to bojle ). Sada odoh na napisem te kontrole, a posle (ako to ne upali) mislim da cu morati da isprevicem sav namestaj!

Hvala! Javicu sta sam uradio.

Pozdrav Svima!

p.s. vas dvojicu sam vec stavio u AboutBox!
[ Aleksandar Ružičić @ 13.11.2004. 23:17 ] @
Evo zavrsio sam Dialog kontrolu .
Uploadovao sam je ovde, jer mi treba pomoc.
1. Kako da, kao CCRPBrowseForFolder, pozovem neki event kada korisnik izabere folder u listi (pre nego sto opritisne OK)?
2. Kako da ubacim mogucnost (open/save dijalozi) da, pre nego sto se pozove OpenFile ili SaveFile, se podesi Filename property? Ja sam nesto pokusavao ali mi vraca nepotpun filename kada se izabere neki drugi fajl (vraca string u duzini predhodno postavljenog filename-a).

Hvala unapred.
[ TheAlas @ 14.11.2004. 14:08 ] @
Koristi "Microsoft Common Dialog Control 6.0 (SP6)" komponentu, sada kada si skinuo SP6 imas tu kontrolu, nema potrebe za ovim sto si poslao.
Tu mozes da podesis default file, itd., a da pokrenes event kada korisnik klikne na folder zahteva subclassing, sta ce ti to uopste... sacekaj da klikne OK, pa posle proveravaj sta je kliknuo tj. izabrao.