-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
Joop, so wie taaktaak es vorschlägt.
Geholfen hab ich gern, auch wenn es etwas durchenander ging, hatte einen langen Tag.
Bis dann, Gruß oki
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
der aus der Zelle!
Was ist zurückklicken? Den Begriff kenne ich nicht. Ansonsten hast du für die Zeilen 0 und 1 ja kein OwnerDraw, machst du ja erst für Zeile 2.
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
und wo ist dein Text?
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
nur mal am Rande. Der Fehler war, dass der Text in Zeile 0 steht. Das Verbinden wird aber in Zeile 1 vorgenommen. Somit muß der Zellzugriff ARow-1 sein.
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
so denne, ändere clred in clBtnFace
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
Grrr wieder roter Kasten :cry: :cry:
Die Textausgabe machst du mit DrawText. So wie schon geschrieben.
Ich mach noch mal den Code fertig.
So hier:
procedure TfoTest05.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
Irgentwie gehen hier die ganzen Formatierungen über den Haufen. Ich seh schon nicht mehr durch.
@taaktaak: Was ist
sm('');
Ich glaub, das liegt an dem direkten Zellenzugriff in DrawText. Der Text muss in eine Variable. Oder ic hseh nicht mehr durch.
Gruß oki
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
Nee,
MyStr := (Sender as TStringGrid).cells;
DrawText((Sender as TStringGrid).Canvas.Handle,
PChar(MyStr),
-1,
R,
DT_CENTER or DT_VCENTER or DT_SINGLELINE);
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
Sorry, das war Blödsinn was ich mit der Zelle gesagt hab. Das haut schon hin.
Speicher mal den Text in eine lokale Variable (String) und übergib die mal mit PChar() in DrawText.
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
Du kannst nicht was über zells in die Zelle schreiben und im Ownerdraw ein rotes Rechteck drüber malen. Wenn dann alles im ownerdraw.
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
dann wird die länge als gesamte Textlänge bis #0 genommen. Probiers aus. Geht.
probier mal das:
DrawText((Sender as TStringGrid).Canvas.Handle,
PChar(Cells),
-1,
R,
DT_CENTER or DT_VCENTER or DT_SINGLELINE);
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
nehm das singleline raus und DT_WORDBREAK in DrewText als Flag rein, dann wird der Text im Rect umgebrochen.
Gruß oki
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
@taaktaak: das mit dem -1 ist schon ok.
Aber das mit deinem versteh ich nicht.
Warum glaubst du, dass es geht wenn du nichts siehst?
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
DT_SINGLELINE erzeugt einen einzeiligen Text im Rect. Du wolltest doch mehrzeilig schreiben.
Und da wird wohl was mit deinem Rect nicht stimmen.
Wo hat DeddyH dir geholfen? ich sehe keinen Beitrag.
oki
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
Also, Zellen verbinden wie in Exel kannst du nicht. Dir bleibt dann nur die Möglichkeit ein OwnerDraw durchuführen und die Zellen zur Laufzeit zu übermalen und den Text in das vergrößerte Rect zu schreiben. Oder du vergrößerst die Zeilenhöhe. Aber dann musst du für den Zeilenumbruch auch wieder auf den Canvas schreiben.
Gruß oki
-
Forum: Programmieren allgemein
by oki,
26. Jun 2008
Zellen von Was? obwohl mir bei dem Codeschnipsel die Augen weh tun hab ich den dezenten Hinweis auf StringGrid gefunden. Somit ist die erste Frage abgehakt.
Warum verbinden?
Mit welchem Ziel?