georginos1989 Δημοσ. 27 Νοεμβρίου 2010 Μέλος Δημοσ. 27 Νοεμβρίου 2010 Ναι σωστά ότι ναναι... Απλά βαζεις να το βαψει ασπρο και τελιωσες... Thanks
georginos1989 Δημοσ. 28 Νοεμβρίου 2010 Μέλος Δημοσ. 28 Νοεμβρίου 2010 Λοιπόν έτσι όπως είναι τωρα το listview που εχει χρώμα μονο στη μια στηλη πχ κοκκινο... μπορώ αντι να ειναι κοκκινο όλη η στηλη να παιρνει και αλλα χρώματα? Δοκιμασα με το SubItemColor[] εβαζα μεσα στην παρενθεση το νουμερο του κάθε subitem για αυτη τη στήλη αλλά δεν γίνετε...
Directx Δημοσ. 28 Νοεμβρίου 2010 Δημοσ. 28 Νοεμβρίου 2010 Λοιπόν έτσι όπως είναι τωρα το listview που εχει χρώμα μονο στη μια στηλη πχ κοκκινο... μπορώ αντι να ειναι κοκκινο όλη η στηλη να παιρνει και αλλα χρώματα? Δοκιμασα με το SubItemColor[] εβαζα μεσα στην παρενθεση το νουμερο του κάθε subitem για αυτη τη στήλη αλλά δεν γίνετε... Δεν είμαι σίγουρος τι θες να κάνεις... Αν θες κάτι τέτοιο: Φυσικά θα πρέπει μόνος σου πια να καθορίζεις με βάση κάποια κριτήρια τι χρώμα θες σε κάθε TListItem SubItem που σχεδιάζεις. Τι κριτήρια είναι αυτά, το καθορίζεις μόνος σου. Για παράδειγμα εγώ ζητώ από το πρόγραμμα να βάφει κάθε πρώτο SubItem εκείνου του TListItem που το Index του (δλδ. η θέση του στο TListView) πληρεί την προϋπόθεση % 2, είτε με κόκκινο είτε με μπλε χρώμα. > if(Stage == cdPrePaint) if(SubItem == 1) ListView1->Canvas->Brush->Color = Item->Index % 2 ? clRed: clBlue; else ListView1->Canvas->Brush->Color = clWhite; Τώρα εσύ με βάση τα δικά σου κριτήρια ορίζεις το χρώμα του Brush σε ότι σε εξυπηρετεί είτε βασιζόμενος σε κάποια δεδομένα του TListItem σου ή με βάση ότι άλλο επιθυμείς (την τεχνική πλέον την γνωρίζεις - θα πρέπει απλά να την εφαρμόσεις κατά το δοκούν).
georginos1989 Δημοσ. 28 Νοεμβρίου 2010 Μέλος Δημοσ. 28 Νοεμβρίου 2010 Ναι οκ κατι καταλαβα... Θα το προσπαθησω... Για να καταλάβεις τι θελω Ανάλογα με το τι θα εχει μεσα το καθε subitem σε μια στηλη να το βαφει με διαφορετικο χρωμα... Αρα θα εχω μια συνθηκη πχ αν ειναι 1 βαψε μπλε αν ειναι 2 βαψε κοκκινο....
Directx Δημοσ. 28 Νοεμβρίου 2010 Δημοσ. 28 Νοεμβρίου 2010 Ναι οκ κατι καταλαβα... Θα το προσπαθησω... Για να καταλάβεις τι θελω Ανάλογα με το τι θα εχει μεσα το καθε subitem σε μια στηλη να το βαφει με διαφορετικο χρωμα... Αρα θα εχω μια συνθηκη πχ αν ειναι 1 βαψε μπλε αν ειναι 2 βαψε κοκκινο.... Ναι, για παράδειγμα: Αν το κείμενο του SubItems είναι: "1" τότε Κόκκινο "2" τότε Πράσινο "3" τότε Μπλε Ακολουθεί ένα υπόδειγμα, γραμμένο όσο πιο ξεκάθαρα γίνεται: > if(Stage == cdPrePaint) if(SubItem == 1) { if(Item->SubItems->Strings[subItem - 1] == "1") ListView1->Canvas->Brush->Color = clRed; if(Item->SubItems->Strings[subItem - 1] == "2") ListView1->Canvas->Brush->Color = clGreen; if(Item->SubItems->Strings[subItem - 1] == "3") ListView1->Canvas->Brush->Color = clBlue; } else ListView1->Canvas->Brush->Color = clWhite;
georginos1989 Δημοσ. 3 Δεκεμβρίου 2010 Μέλος Δημοσ. 3 Δεκεμβρίου 2010 Λοιπόν για να μην ανοίγω νέο θέμα... Έχω ενα πίνακα σε μια βαση σε sql server και θέλω απο τον πινακα να παίρνω εγγραφές με sql ερώτημα τον οποίο θα τρέχει στην c και να γεμίζω το listview... Για αρχη το ερωτημα βρισκεται σε ενα κουμπι και οταν το πατας τρεχει και γεμιζει το Listview μια μια εγγραφη καθε φορα.. Ομως καθε φορα παιρνει την ιδια εγγραφη... Πως θα το κανω να πηγαίνει καθε φορα στην επομενη εγγραφη?
georginos1989 Δημοσ. 3 Δεκεμβρίου 2010 Μέλος Δημοσ. 3 Δεκεμβρίου 2010 Ο κωδικας που εβαλα στο κουμπι ADOQuery1->SQL->Text=" select CODE as DC, NAME as N, NAME2 as N2 \ from DOCTOR where CODE=1+counter "; ADOQuery1->ExecSQL(); ADOQuery1->Active=true; a=ADOQuery1->FieldValues["DC"]; b=ADOQuery1->FieldValues["N"]; d=ADOQuery1->FieldValues["N2"]; lst=ListView1->Items->Add(); lst->Caption=a; li=ListView1->Items->Item[0]; lst->SubItems->Add(; li=ListView1->Items->Item[1]; lst->SubItems->Add(d);
Directx Δημοσ. 4 Δεκεμβρίου 2010 Δημοσ. 4 Δεκεμβρίου 2010 Δεν ασχολούμαι ιδιαίτερα με ΒΔ στον C++ Builder, αλλά για δοκίμασε την ρουτίνα FindNext που κληρονομεί το TADOQuery από το TDataSet.
georginos1989 Δημοσ. 4 Δεκεμβρίου 2010 Μέλος Δημοσ. 4 Δεκεμβρίου 2010 Και κάτι άλλο για το event που βάζει χρώμα στα subitems... Γιατί χρειάζεται η πρώτη if? H if(Stage == cdPrePaint) ? To έτρεξα και χωρίς αυτην και δουλευε...
Directx Δημοσ. 4 Δεκεμβρίου 2010 Δημοσ. 4 Δεκεμβρίου 2010 Αυτη η ρουτινα που βρισκετε? Είναι ρουτίνα που σου προσφέρει το ADOQuery1 component. Και κάτι άλλο για το event που βάζει χρώμα στα subitems... Γιατί χρειάζεται η πρώτη if?H if(Stage == cdPrePaint) ?To έτρεξα και χωρίς αυτην και δουλευε... Όπως σου υπέδειξα εδώ το OnAdvancedCustomDrawSubItem event καλείται σε διάφορες φάσεις (Stage) σχεδίασης του TListView οπότε με το cdPrePaint εξασφαλίζω ότι το χρώμα του TListView->Canvas->Brush θα αλλάξει μόνο πριν την έναρξη της σχεδίασης και όχι μετά από αυτήν κλπ. Οπότε είναι μια ελάχιστη εξασφάλιση (play it safe) για το πότε θα αλλάξουμε το Brush TColor του TCanvas μας και την χρησιμοποιώ.
georginos1989 Δημοσ. 4 Δεκεμβρίου 2010 Μέλος Δημοσ. 4 Δεκεμβρίου 2010 Μπα δεν δουλευει με αυτην την ρουτινα.. Απλώς καθε φορά σου επιστρεφει την δευτερη εγγραφη
Directx Δημοσ. 4 Δεκεμβρίου 2010 Δημοσ. 4 Δεκεμβρίου 2010 Από ότι βλέπω υπάρχει μια ακόμη ρουτίνα στο TADOQuery που ονομάζεται "Next" δοκίμασε την και αυτήν. Επίσης έχε υπόψη σου ότι την FindNext μπορείς να την καλείς σε ένα loop μέχρι να επιστρέψει false διαβάζοντας ένα - ένα όλα τα αποτελέσματα του TADOQuery. Τώρα αν δεν δουλέψει τίποτε από αυτά, και καθώς δεν ασχολούμαι με τις ΒΔ functions του C++ Builder δεν έχω κάτι άλλο να σου προτείνω.
georginos1989 Δημοσ. 4 Δεκεμβρίου 2010 Μέλος Δημοσ. 4 Δεκεμβρίου 2010 Ναι ενταξυ δεν πειραζει.... Βοηθησες με το listview....
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.