rebel2000 Δημοσ. 12 Δεκεμβρίου 2005 Δημοσ. 12 Δεκεμβρίου 2005 An kapoios gnwrizei apo Borland C++ 6.0 exw 3 erwthsoules... 1o Pws mporw apo ena ListBox na parw se string ena Item tou. 2o Pws mporw na swsw ola ta Items tou ListBox se ena text etsi wste na mporw na ta epanaferw opote thelw. 3o Thelw na kanw fullscreen ena image,pws ginete kati tetoio? Thanks!
alkisg Δημοσ. 12 Δεκεμβρίου 2005 Δημοσ. 12 Δεκεμβρίου 2005 Borland C++ 6; Η τελευταία που έχω δει ήταν η 5.0... Μήπως εννοείς builder?
Directx Δημοσ. 12 Δεκεμβρίου 2005 Δημοσ. 12 Δεκεμβρίου 2005 C/C++ Builder 6.0 Για να λάβουμε ως AnsiString ένα Item από το TListBox control μπορούμε να κάνουμε το εξής: > AnsiString asListItem = ListBox1->Items->Strings[0]; ShowMessage(asListItem); Στο παραπάνω παράδειγμα παρουσιάζεται (ShowMessage) το πρώτο item ενός TListBox που αποθηκεύεται στην AnsiString μεταβλητή asListItem, το έγραψα έτσι ώστε να είναι πολύ εμφανές το τι κάνουμε. Ουσιαστικά τα TListBox items είναι μια ομάδα από Strings (προέρχονται από την class TStringList, θυμήσου το και για τα παρακάτω, αν και δεν έχει ιδιαίτερη σημασία) με αρίθμηση C, συνεπώς το ->Strings[0] επιστρέφει το πρώτο item, το ->Strings[1] το δεύτερο κ.ο.κ. - Για να σώσουμε τα items του TListBox control σε ένα απλό αρχείο κειμένου κάνουμε: > try { ListBox1->Items->SaveToFile("MYITEMS.DAT"); } catch(Exception &Error) { ShowMessage(Error.Message); } Ενώ για να φορτώσουμε τα αποθηκευμένα items στο TListBox κάνουμε: > try { ListBox1->Items->LoadFromFile("MYITEMS.DAT"); } catch(Exception &Error) { ShowMessage(Error.Message); } Τέλος, όταν λες full-screen υποθέτω πως θέλεις να κάνεις με κώδικα (διότι γίνεται κατευθείαν και μέσο του περιβάλλοντος εργασίας) το Image να καταλαμβάνει ολόκληρο το παράθυρο το οποίο με την σειρά του θες να είναι μεγιστοποιημένο και να κρύβει (εξαφανίζει) την Taskbar,οπότε: > Image1->Align = alClient; Image1->Stretch = true; WindowState = wsMaximized; BorderStyle = bsNone; Απλά αλλάζουμε την στοίχιση (Align) του TImage control ώστε να καλύπτει την επιφάνεια εργασίας του παράθυρου μας (alClient), ζητάμε να τραβήξει την εικόνα στις ίδιες διαστάσεις (->Stretch = true εάν δεν σου αρέσει έτσι απλά γύρισε το σε false) και κάνουμε Maximize το παράθυρο μας (wsMaximized), τέλος αλλάζουμε το στυλ του (BorderStyle) ώστε να μην έχει περιθώρια ή τίτλο (bsNone) αφού κατά αυτό τον τρόπο καταλαμβάνει ολόκληρη την διαθέσιμη οθόνη εξαφανίζοντας την Taskbar (το κόλπο αυτό σε Windows API θέλει και άλλο κώδικα αλλά κρίνω ότι η έτοιμη ρουτίνα που καλεί η BorderStyle του C/C++ Builder 6.0 αρκεί). Καλή συνέχεια!
damn3 Δημοσ. 12 Δεκεμβρίου 2005 Δημοσ. 12 Δεκεμβρίου 2005 Μπορεί να κάνει την Form (FormStyle) του fsStayOnTop & να κρύψει την taskbar. ΥΣ: TObject-TPersistent-TStrings-TStringList μικρό λαθάκι σε ένα άψογο post...
rebel2000 Δημοσ. 12 Δεκεμβρίου 2005 Μέλος Δημοσ. 12 Δεκεμβρίου 2005 Χίλια ευχαριστώ για την βοήθεια Directx!! Τώρα που σε βρήκα.....μήπως ξέρεις πως γίνετε αυτό το Item που επιστρέφετε να είναι και το Selected? Και πώς γίνετε όταν κάνω "ListBox1->Items->Add(OpenDialog1->FileName)" να μη μου δείχνει όλο το path αλλά μόνο το filename....
rebel2000 Δημοσ. 12 Δεκεμβρίου 2005 Μέλος Δημοσ. 12 Δεκεμβρίου 2005 Για το πρώτο έκανα κάτι αλλά δεν είμαι σίγουρος αν είναι και η καλύτερη λύση... > int i; for(i=0;i<ListBox1->Items->Count;i++) { if (ListBox1->Selected[i]) break; } Image1->Picture->LoadFromFile(ListBox1->Items->Strings[i]);
Directx Δημοσ. 12 Δεκεμβρίου 2005 Δημοσ. 12 Δεκεμβρίου 2005 rebel2000, για να βρούμε το επιλεγμένο item ενός TListBox κάνουμε: > if(ListBox1->ItemIndex!=-1) { ShowMessage(ListBox1->Items->Strings[ListBox1->ItemIndex]); }} Το ->ItemIndex εάν είναι διάφορο του -1 περιέχει τον αριθμό του επιλεγμένου TListBox item κατά τα αναφερθέντα στο προηγούμενο post διαφορετικά (->ItemIndex==-1) δεν υπάρχει κανένα επιλεγμένο item. Προσοχή όμως, εάν το TListBox μας υποστηρίζει πολύ-επιλογή items, δηλαδή το MultiSelect = true τότε το ->ItemIndex υποδεικνύει πως δεν υπάρχει κανένα επιλεγμένο item εφ' όσον είναι ίσο με μηδέν (0) αντί -1 που ισχύει όταν το MultiSelect = false. Συνεπώς ο κώδικας μας σε αυτή την περίπτωση θα πρέπει να γίνει: > if(ListBox1->ItemIndex!=0) { ShowMessage(ListBox1->Items->Strings[ListBox1->ItemIndex]); } Για να λάβεις μόνο το όνομα του αρχείου μαζί με την κατάληξη του χρησιμοποίησε την εντολή ExtractFileName ως: > ListBox1->Items->Add(ExtractFileName(OpenDialog1->FileName)); --- damn3 σε ευχαριστώ για τα καλά σου λόγια, εύστοχες οι παρατηρήσεις σου, σπεύδω να υπενθυμίσω πως η VCL είναι υπόδειγμα αντικειμενοστραφούς προγραμματισμού όπως παλαιότερα η Borland - OWL (καθαρό C++ framework) αλλά ασύγκριτα ευκολότερη! Καλή συνέχεια!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.