Chrisxxx Δημοσ. 18 Ιουλίου 2006 Δημοσ. 18 Ιουλίου 2006 Με ποια εντολη μπορω να κοψω σε ενα listBox χαρακτηρες. Τωρα εμφανιζεται το πληρες path και εγω θελω να βλεπω μονο το ονομα των αρχειων που φορτωνω. π.χ. c:\rock\u2\u2 - elevation τωρα και θελω να βλεπω μονο το u2 - elevation.
Directx Δημοσ. 19 Ιουλίου 2006 Δημοσ. 19 Ιουλίου 2006 Εάν κατάλαβα καλά θέλεις απλά να κόψεις την σχεδίαση της πλήρης διαδρομής του αρχείου στο TListBox control διατηρώντας την όμως ατόφια ως ->Strings στοιχείο, σε μια τέτοια περίπτωση μια αρκετά ευέλικτη λύση είναι η επέμβαση στον τρόπο σχεδίασης των Items του control. Συνεπώς από τα Properties του Object Inspector θέσε το Style του control σε “lbOwnerDrawFixed” και ύστερα εισήγαγε τον παρακάτω κώδικα στο OnDrawItem Event του TListBox control. > [i]void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State) {[/i] [b] ListBox1->Canvas->TextRect(Rect,Rect.Left,Rect.Top, ExtractFileName(ListBox1->Items->Strings[index]));[/b] [i]}[/i] Ουσιαστικά ο παραπάνω κώδικας επεμβαίνει στον τρόπο που σχεδιάζονται (->TextRect) τα Items του control σχεδιάζοντας μόνο το Όνομα και την Κατάληξη του αρχείου (ExtractFileName). Όσον αφορά την “lbOwnerDrawFixed”, απλά εξηγούμε στην VCL πως οι χαρακτήρες του control μας θα έχουν σταθερό μέγεθος διαφορετικά θα πρέπει να γράψουμε ένα Event το οποίο θα υπολογίζει και το μέγεθος των φόντων, πράγμα όμως που στην παρούσα περίπτωση το θεωρώ πλεονασμό (και γενικότερα το αποφεύγω). Με την επιφύλαξη οιονδήποτε bug, Καλή συνέχεια.
Chrisxxx Δημοσ. 19 Ιουλίου 2006 Μέλος Δημοσ. 19 Ιουλίου 2006 Υπάρχει καποια συναρτηση string cut? Αν καταλαβα καλα αυτο που μου προτεινεις κραταει μονο το ονομα του αρχειου και την καταληξη π.χ. Elevation.mp3 απο το 1ο post???
Directx Δημοσ. 19 Ιουλίου 2006 Δημοσ. 19 Ιουλίου 2006 Αυτό που σου προτείνω απλά σχεδιάζει μόνο το όνομα και την κατάληξη του αρχείου στο control (οπότε ναι θα φανεί μόνο το Elevation.mp3) ενώ κρατά την πλήρη διαδρομή που έχεις αποθηκεύσει με την ListBox1->Items->Add ανέπαφη ώστε να μπορείς εύκολα να την χρησιμοποιείς δηλαδή: εάν δοκιμάσεις να διαβάσεις κάποιο item (->Strings) του TListBox θα δεις ότι η διαδρομή παραμένει ατόφια (c:\rock\u2\u2 - elevation.mp3) απλά στο οπτικό τμήμα του control φαίνεται μόνο το όνομα και η κατάληξη του. Με αυτό τον τρόπο λοιπόν κρύβεται η πλήρης διαδρομή στο οπτικό τμήμα αλλά παραμένει διαθέσιμη για κάθε εσωτερική λειτουργία του προγράμματος Όμως εάν δεν σε εξυπηρετεί κάτι τέτοιο και απλά θέλεις να μην διατηρείται καθόλου η διαδρομή στο ListBox (όχι απλά να μην φαίνεται) τότε ξέχνα όλα τα παραπάνω και απλά χρησιμοποίησε την εντολή ExtractFileName κατά την αποθήκευση των διαδρομών στο control, πχ: > ListBox1->Items->Add(ExtractFileName(strPath)); Υ.Γ. Διαβάζοντας το αρχικό post σου συμπέρανα πως θέλεις να διατηρείς την πλήρη διαδρομή των αρχείων κρύβοντας την απλά από το οπτικό τμήμα του TListBox οπότε πρότεινα αυτό το μικρό κολπάκι.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.