Borland 6: Frage zu FindDialog & Variablen
-
Ich möchte mit dem FindDialog Text in meinem RichEdit-Feld markieren, wie bei Notepad. Wir heißt der Befehl/Eigenschaft dafür (txt_eingabe->FindDialog1->……; )???
Dann mal eine allgemeine Frage zum Handling mit Variablen. Wo schreibt man die Deklaration im Normalfall hin? In die Header oder cpp-Datei…?
Nach dem ich das hier „char app_name;“ in die cpp geschrieben habe, wollte ich darunter „app_name = „Blabla““ schreiben, das ging aber nicht, der Compiler meldet mir als Fehler ‚char *’ kann nicht in ‚char’ geändert werden. Warum ist das so? Was ist falsch?
-
Hallo
zu FindDialog : Nicht den Dialog mit der Funktion verwechseln.
Der Dialog selber ist nur die Oberfläche, um die Daten der Suche einzugeben.
Die Aktion muß dann selber durchgeführt werden.
Schau mal
http://www.c-plusplus.net/forum/viewtopic.php?t=83582&highlight=finddialog
an, da ist genau das beschrieben.Die Implementation und Initialisierung der Varaiblen sollte in die CPP-Dateien,
Die zusätzliche (eventuell extern oder static) Deklaration in der Headerdatei brauchst du nur, wenn du diese Variable auch außerhalb diese ÜE brauchst.
Tip : vermeide globale Variablen, lieber Übergabewerte benutzen.char ist nur ein Zeichen, char * eine Zeichenkette.
Im C++ Builder solltest du statt dessen lieber AnsiString nehmen.bis bald
akari
-
Ich möchte in der Statuszeile meines Texteditors eine Information ausgeben, in welcher zeile sich der Cursor befindet. Bin damit aber völlig überlastet. Ich bekomme nur hin, wie viele Zeilen es überhaupt gibt:
zeilen_zaehler = txt_eingabe->Lines->Count;
zeilen_gesamt = "Zeilen gesamt: ";
status_bar->Panels->Items[1]->Text = zeilen_gesamt + zeilen_zaehler;Wie ändere ich das um, dass stattdessen die Zeilennummer angezeigt wird, in der sich der Cursor befindet? Weiß noch nicht mal die Eigenschaft von „Lines“ dafür.
Und übrigens, wo ist der Unterschied zwischen „->“ und „.“ Also Pfeil und Punkt?
Ein weiteres Anfängerproblem ist das Konvertieren von Variablen von Typ1 in Typ2. Kann mir mal einer anhand eines Beispiels zeigen, wie das geht.
-
Hallo
Wie ändere ich das um, dass stattdessen die Zeilennummer angezeigt wird, in der sich der Cursor befindet? Weiß noch nicht mal die Eigenschaft von „Lines“ dafür.
Dafür ist TRichEdit->CaretPos zuständig.
Label1->Caption = IntToStr(RichEdit1->CaretPos.x) + "," + IntToStr(RichEdit1->CaretPos.y); // x == Zeichen, y == ZeileUm diese Anzeige aktuell zu halten, schreibst du diese Angabe in die OnChange-, OnMouseUp- und OnKeyPressed-Events des RichEdits.
Und übrigens, wo ist der Unterschied zwischen „->“ und „.“ Also Pfeil und Punkt?
-> wird bei Zeigern genommen :
struct TTest {AnsiString Text}; TTest Test; Test.Text = "Hallo" TTest *Test2 = new TTest; Test2->Text = "Hallo";Ein weiteres Anfängerproblem ist das Konvertieren von Variablen von Typ1 in Typ2. Kann mir mal einer anhand eines Beispiels zeigen, wie das geht.
Das ist natürlich von den Typen abhängig. Oben habe ich bereits AnsiString in int umgewandelt. Weitere Beispiele findest du in der FAQ.
bis bald
akari
-
Die Zeilennummer erfährst du über TRichEdit::CaretPos.
Der Unterschied zwischen . und -> erfährst du im C/C++-Tutorial deiner Wahl oder im entsprechenden Forum, mit dem C++Builder speziell hat das nichts zu tun.
Für das Konvertieren von Variablen gibt es keine allgemeinen Regeln, das hängt jeweils von den Variablentypen ab.
In Zukunft bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema. Danke!
-
Also ich habe den Code in die Funktion hineingeschrieben (void __fastcall TForm1::txt_eingabeChange(TObject *Sender)). Hat auch geklappt, aber nur, wenn ich die Anzahl der Zeilen ändere (zB mit ENTER), wenn ich mit der Maus den Cursor irgendwo hinsetze, passiert da gar nichts. Habe ich den Code in die falsche Funktion geschrieben oder gibt’s da einen Trick?
-
Hallo
Um diese Anzeige aktuell zu halten, schreibst du diese Angabe in die OnChange-, OnMouseUp- und OnKeyPressed-Events des RichEdits.
bis bald
akari