StringGrid- Zellen markieren
-
Hallo, ich habe erst neu in der Programmierung mit dem C-Builder. Und daher kenne ich mich noch nicht so gut aus, vielleicht könntet ihr mir ja helfen. Und zwar möchte ich in einem StringGrid die Zellen die ich markiere mit "XXX" ausfüllen, wie kann ich das machen? Würde mich über eine Antwort freuen.
Danke
-
Kann mir in Bezug auf die Zellenmarkierung vielleicht jemand helfen??????
-
Deine Problembeschreibung ist vergleichsweise unverständlich.
Mit Zeichen "ausfüllen" kannst du die Zellen doch einfach, indem du den Zellentext entsprechend setzt.
-
ok, vielleicht nochmal etwas anders formuliert:
Ich habe ein StringGrid, wenn ich da während das Programm läuft eine Zelle markiere dann möchte ich das genau in dieser Zelle "XXX" drinsteht. Aber ich weiß nicht wie ich das machen kann.
Ich hatte den Ansatz:
void __fastcall TForm1::StringGrid1Click(TObject *Sender)
{
int i, j;
StringGrid1->Cells[i][j] ="XXX";
}allerdings bringt er mir da überhaupt nichts, wie kann ich vermitteln, dass i und j genau die Zeile und Spalte ist, die gerade markiert wurde??
Weiß das vielleicht jemand?
-
Hallo,
hast du dir schon mal das Ereignis OnSelectCell angeschaut ??
mfg
VergissEs
-
Also wahrscheinlich stell ich mich ziemlich doof an, aber ich weiß nicht wie das gehen soll, denn irgendwie funktioniert das bei mir nicht. Kann mir da mal jemand genauer helfen?
-
Hallo,
Ich weiss nicht was man da nicht verstehen kann. In der Hilfe zu OnSelectCell ist ja sogar ein Beispiel.
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, long Col, long Row, bool &CanSelect) { CanSelect = (StringGrid1->Cells[Col][Row]== "") }
Das brauchst du doch nur etwas abzuwandeln.
Kann es sein, das du mit der Hilfe nicht zurecht kommst? Wenn das der Fall sein sollte, dann lies mal das hier http://www.junix.ch/bcb/help/ durch.Ciao
-
StringGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect)
OnSelectCell sagt doch aus, das dieses Ereignis ausgelöst wird wenn eine
Zelle Selektiert wird.
Als Übergabe siehste doch ACol und ARow das ist die Position der ausgewählten Zelle (ACol für Spalte, ARow für Zeile).Also musste nichts anderes machen als
//im OnSelectCell Ereignis StringGrid1->Cells[ACol][ARow] = "XXX";
Mfg
VergissEs
-
Das Beispiel aus der Hilfe habe ich schon verwendet gehabt, doch das hat nicht funktioniert, hier mal das Stück Quellcode:
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect)
{
StringGrid1->Cells[ACol][ARow] = "XXX";
}Da kommt dann folgender Fehler:
[C++Fehler] Unit1.cpp(55): '_fastcall TForm1::StringGrid1SelectCell(System::TObject *,int,int,bool &)' is not a member of 'TForm1'.Was sagt mir das dann aus?????
-
Das sollte dir sagen, dass deine funktion nicht deklariert ist. Markiere bitte mal dein StringGrid, gehe in den Objektinspektor, dann auf Erignisse und schau mal nach was unter OnSelectCell steht. Wenn dort nichts steht klicke doppelt auf den Eintrag.
-
Jupps da stand nichts, jetzt funktionierts auch. DANKE
-
Diese Fehlermeldung erklärt dir, das du einfach den Quellcode per
copy & paste eingefügt hast und die Headerdatei dabei ausser acht gelassen hast.Also nochmal ganz von vorne
1. Markiere dein StringGrid1
2. gehe in den Objektinspektor auf Ereignisse
3. Doppelklicke in die Zeile wo OnSelectCell steht
4. in die neu erzeugte Funktion gib dein StringGrid1->Cells[ACol][ARow] = "XXX"; ein
-
Ja danke, es funktioniert jetzt und ich bin total froh. Mein Problem war das ich es nur kopiert hatte und nicht über die Ereignistabelle gegangen bin.
Danke euch, wenn jetzt das Problem mit dem Kalender noch geklärt werden könnte, wäre ich euch verdammt dankbar. Denn dann wäre mir super viel geholfen worden.
Danke euch für die Geduld mit mir. Weiß das ich etwas schwer von Begriff bin, aber ich arbeite erst seit 1 woche mit dem Borland C++-Builder.