StringGrid goRowSelect <-> goEditing
-
Hallo,
ich möchte in einem StringGrid eine mit x Spalten und y Zeilen eine gesamte Zeile auswählen. Dies gelingt mir mittels
goRowSelect
.
Problem hierbei ist, das ich nun einen Eintrag nicht editieren kann.
goEditing
ist logischerweise nicht funktionsfähig.
Ich möchte eigentlich hin und her schalten im Modus Edit und select.
Im Editiermodus ist die Anzeige einer ganzen Zeile somit deaktiviert.
Mit folgender Zeile stelle ich fest in welchem Modus ich bin.if (StringGrid1->Options.Contains(goRowSelect))
Nun aber wie kann ich goRowSelect deaktivieren ?
Das die Suchfunktion momentan nicht geht ,habe ich hier nicht viel drüber gefunden.
Speichern und lesen aus einer Datei klappt. Nur speziel die Kombination Selekt und Editiern mit dem Grid geht nicht.
Danke
-
du kannst beim Click- oder SelectCell-Ereignis auf das StringGrid ja abfangen, ob auf eine einzelne Zelle oder auf die fixierte Spalte (StringGrid->State.Contains(gdFixed)) geklickt wurde und dann die Optionen für das StringGrid ändern
-
Hallo Linnea,
OK, wenn Du noch 1 Zeile hinzufügst dann glaube ich das ich es habe.
.. dann die Optionen für das StringGrid ändern, mittels...
Also ganz Doof:
AttStringGridLX1->Options.operator +=(goRowSelect);
geht nicht. Aber in die Richtung muß es irgendwie gehen.
Danke
-
-
Danke Alexander,
hat geholfen. Genau dies habe ich noch benötigt.
Nun muß ich ein wenig weiter am Grid rumspielen.
-
Hallo,
ich hänge diese Frage an dieses Thema an. Denke es trifft den Titel immer noch super.In einem StringGrid selektiere ich Abwechselnd die Zeile und explizit ein Feld.
TGridRect NoSel; // Edit selected if (StringGrid->Options.Contains(goRowSelect)) { StringGrid->Options = StringGrid->Options >> goRowSelect; NoSel.Left = 1; NoSel.Right = 1; } else // Disable Row Select { StringGrid->Options = StringGrid->Options << goRowSelect; NoSel.Left = 4; NoSel.Right = 1; } NoSel.Top = NoSel.Bottom =StringGrid->Selection.Top +1; StringGrid->Selection = NoSel;
Das hin und her Schalten funktioniert prima hiermit.
Gehe ich jedoch mittels Tab in ein nächstes Feld und möchte hier den Eintrag ändern muß ich erst Doppelklick mit der Maus machen um dies zu tun.
Möchte nach Tab eigentlich gleich den Eintrag in der Zelle ändern können, ohne notwendigen Doppelklick.Hängt anscheinend nicht mit dem Status
gdFixed
zusammen.
hat hier jemand einen Tip.Danke
-
Du willst also immer den Bearbeitungsmodus anzeigen?
Dann schau Dir doch mal Options genauer an.Gruß,
Alexander
-
In den Optionen habe ich goEditing auf True gesetzt.
Habe nun sogar mal das versucht. Dann kann ich aber nicht mal mehr mit Doppelklick was tun
void __fastcall TForm::StringGridSelectCell( TObject *Sender, int ACol, int ARow, bool &CanSelect) { StringGrid->Options = StringGrid->Options >> goEditing; }
Auch die Option goDrawFocusSelected nutzt hier nix.
Aber denke mitgoEditing
sollte es doch was zu tun haben ?
Oder liege ich da falsch?
-
Hallo
Alexander meint den Wert goAlwaysShowEditor der Eigenschaft Options.
bis bald
akari
-
Zumindest steht es so in der Help:
goEditing :Der Inhalt der Zellen kann bearbeitet werden. Ist goEditing in Options enthalten, hat goRangeSelect keine Auswirkung
Also da probiere ich auch schon seit einer Stunde rum. Mhh komisch
-
Help:
goAlwaysShowEditor Der Bearbeitungsmodus kann nicht beendet werden. EditorMode muß nicht mit der Eingabetaste oder F2 aktiviert werden. Ist goEditing in Options nicht enthalten, hat goAlwaysShowEditor keine Auswirkung. Ist goRowSelect in Options enthalten, hat goAlwaysShowEditor ebenfalls keine Auswirkung.
Da ich
goRowSelect
auf true gesetzt hatte konnte ich goAlwaysShowEditor nicht setzen. Klar.
Aber genau der Hinweis war es.
"goAlwaysShowEditor"
bringt die Lösung
Danke Euch beiden. Es funktioniert.