Witam
Tak jak w temacie. Chciałbym się dowiedzieć jak w DBGridzie w 1 komórce zapisać kilka linijek tekstu. Chciałbym zorbić coś takiego jak bym w środku komórki nacisnął enter i dalszy tekst będzie już w nowej linijce ale ciągle w tej samej komórce. Korzystam z komponentów ZEOS, a wyniki wyświetlam w DBGrid. Może trzeba jakoś zmienić zapytanie SQL żeby osiągnąć taki rezultat?
Nikt nie wie jak można coś takiego zrobić? A może po prostu nie korzystać z DBGrid? Tylko w takim przypadku z czego?
eee....
A nie lepiej położyć gdzieś obok DBMemo, czy tam DBRichEdit i w tym wpisywać taki duży tekst?
Powracam jeszcze raz do tematu. Opiszę to inaczej. Może ktoś coś pomoże. Po prostu chodzi o to, żeby w jednym wierszu (w dbgridzie) zawierającym dane: imię, nazwisko, adres, wiek, adres był wpisany w 2 wierszach. Ulica wyżej, a kod pocztowy i miasto niżej. W pozostałych komórkach tego wiersza tekst byłby wyśrodkowany w pionie
OwnerDraw !
mógłbyś napisać coś więcej?
OwnerDraw
poza tym wątpię, czy uda Ci się coś takiego ze zwykłym DBGridem
Ja zrobiłem coś takiego ( nie wiem czy działa na DBGrid, ja robilem na AdvStringGrid ):
W KeyDown w DBGird
if key = VK_RETURN then
begin
AdvStringGrid1.RowHeights[yy+1] := AdvStringGrid1.RowHeights[yy+1] + 13;
AdvStringGrid1.Cells[xx+1,yy+1] := AdvStringGrid1.Cells[xx+1,yy+1] + #13#10;
end;
W SelectCell:
xx := ACol;
yy := ARow;
i oczywiście zdeklaruj 2 zmienne (xx,yy) typu integer...
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
xx,yy : integer; // <-------------------------------
implementation
{$R *.dfm}
PS. Nie wiem czy ten sposób działa na DbGrid..!
ownerdraw powinien działać, o ile dopasuje sobie wysokość komórki.
snw napisał(a)
o ile dopasuje sobie wysokość komórki.
a to może być problem
czemu, znając czcionkę można sprawdzić jej wysokość + odstęp między wierszami choćby w paincie, potem:
row_height:=line_count*const_text_height+(line_count+1)*const_text_interspace
ewentualnie canvas.textheight
ale funkcja zwraca chyba tylko wysokość tekstu.