DBGrid Memo
-
- Beiträge: 440
- Registriert: So 10. Dez 2006, 14:59
- OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
- CPU-Target: 64Bit
- Kontaktdaten:
DBGrid Memo
Hey Leute
ich habe bei abfragen in manchen Spalten immer ein (MEMO) stehen weiß jemand wie man zb nur die ersten 20 zeichen davon anzeigt und nicht dieses MEMO ?
ich habe bei abfragen in manchen Spalten immer ein (MEMO) stehen weiß jemand wie man zb nur die ersten 20 zeichen davon anzeigt und nicht dieses MEMO ?
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Kann das sein, das die Typen zwischen der Abfrage und dem Control nicht ganz passend sind (Stringlänge !).
Wenn ein Text zu lange ist, als das er von Control dargestellt werden kann, so kann das als Hinweis genommen werden. Ich nehme an die Spalte in einem Memo dargestellt, zeigt die Daten richtig an !?
Wenn ein Text zu lange ist, als das er von Control dargestellt werden kann, so kann das als Hinweis genommen werden. Ich nehme an die Spalte in einem Memo dargestellt, zeigt die Daten richtig an !?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Ganz einfach - Wie ich vermutet habe - Text ist nicht String.EugenE hat geschrieben:Und wie zeichne ich den Text da selbst rein?
Bei der Abfrage sind 2 Spalten in MySQL auf Text, und ja wenn man diese Spalte auf einem DBMemo wird der Text angezeigt^^
Das was du machen kannst ist entweder Datenbankseitig den Text (zu verkürzen) auf String zu casten. Oder es Applikationsseitig zu machen, z.b. wie es Christian vorschlägt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 440
- Registriert: So 10. Dez 2006, 14:59
- OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
- CPU-Target: 64Bit
- Kontaktdaten:
wenn ich wüsste welche Demo du meinst?^^Christian hat geschrieben:Wie du den text da reinzeichnest kannst du aus der ensprechenden Demo ersehen.
ich fand nur dieses ( welches auch funktionierte ) :
http://www.delphipraxis.net/post119700.html#119700" onclick="window.open(this.href);return false; hab es bischen verkürzt und voila es geht^^
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Mhm, find ich tatsächlich auf die schnelle nicht, war eigentlich der festen Überzeugung ich hab mir das mal aus nem lazarus example abgeguckt.
Hier mal ein Beispiel:
Hier mal ein Beispiel:
Code: Alles auswählen
procedure TfTasks.dgTasksDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
OldBrush : TBrush;
OldPen : TPen;
begin
OldBrush := TBrush.Create;
OldBrush.Assign(Canvas.Brush);
Oldpen := TPen.Create;
OldPen.Assign(Canvas.Pen);
with (Sender as TDBGrid), Canvas do
begin
Canvas.Brush.Style := bsSolid;
Canvas.Pen.Color := Canvas.Brush.Color;
Canvas.Rectangle(Rect);
if Column.FieldName = 'ACTIVE' then
begin;
if Data.Tasks.DataSet.FieldByName('ACTIVE').AsString = 'Y' then
TreeImages.Draw(Canvas,Rect.Left+1,Rect.Top+1,1,True)
else
TreeImages.Draw(Canvas,Rect.Left+1,Rect.Top+1,0,True);
end
else if Column.FieldName = 'SUMMARY' then
begin
if Data.Tasks.DataSet.FieldByName('PERCENT').AsInteger = 100 then
Canvas.Font.Color := clGrayText
else
Canvas.Font.Color := clWindowText;
if Data.Tasks.DataSet.FieldByName('COMPLETED').AsString = 'Y' then
Canvas.Font.Style := [fsStrikeOut]
else
Canvas.Font.Style := [];
Canvas.Font.Color := clWindowText;
Canvas.TextOut(Rect.Left+20,Rect.Top,Column.Field.DisplayText);
if Data.Tasks.DataSet.FieldByName('HASCHILDS').AsString <> 'N' then
TreeImages.Draw(Canvas,Rect.Left+1,Rect.Top+1,3,True)
else
TreeImages.Draw(Canvas,Rect.Left+1,Rect.Top+1,4,True);
Canvas.Font.Color := clWindowText;
end
else
begin
Canvas.Brush.Assign(OldBrush);
Canvas.Pen.Assign(OldPen);
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
Canvas.Brush.Assign(OldBrush);
Canvas.Pen.Assign(OldPen);
OldBrush.Free;
OldPen.Free;
end;
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Code: Alles auswählen
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
memowidth = 10; // 10 Zeichen
var
s: string
begin
with (Sender as TDBGrid) do begin
if Column.Field.IsBlob then begin
Canvas.FillRect(Rect);
s := copy(Column.Field.AsString, 1, memowidth);
Canvas.TextOut(Rect.Left+2, Rect.Top+2, s);
end else begin
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
end;