14. september 2003 - 15:08Der er
14 kommentarer og 1 løsning
DBGrid memo field
Jeg har fundet denne geniale løsning på EE, til hvordan man i DBGrid viser indholdet af et MemoField i stedet for teksten (MEMO), men jeg kan ikke få den til at virke. Nogen gode bud, til hvordan den kommer til at virke?
Denne kode skal bare smides ind i DBGrid'ens OnDrawDataCell:
procedure TForm3.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var P : array [0..50] of char; {array size is number of characters needed} BS : tBlobStream; {from the memo field} S : String; begin If Field is TMemoField then begin with (Sender as TDBGrid).Canvas do begin {Table1Notes is the TMemoField} BS := tBlobStream.Create(Table1Notes, bmRead); <-- Table1Notes kan jeg ikke helt finde ud af hva skal være FillChar(P,SizeOf(P),#0); {terminate the null string} BS.Read(P, 50); {read 50 chars from memo into blobStream} BS.Free; S := StrPas(P); while Pos(#13, S) > 0 do {remove carriage returns and} S[Pos(#13, S)] := ' '; {line feeds} While Pos(#10, S) > 0 do S[Pos(#10, S)] := ' '; FillRect(Rect); {clear the cell} TextOut(Rect.Left, Rect.Top, S); {fill cell with memo data} end; end; end;
Punkt 1. en dbgrid er ikke designet til at vise memo/blob felter. Punkt 2. den kode du referer til henter kun 50 karakter ind i dit dbgrid. (Altså det kan højest sandsynligt stå i 1 dbgrid-linie uden linie skift.
kan du ikke bare bruge en dbmemo eller dbctrlgrid ?
Du finder dbmemo og dbctrlgrid på fanebladet datacontrols. Jeg er ikke i tvivl om at du kan "drawe" dit dbmemo felt ind i et dbgrid, men så skal du tage hensyn til antal linier, font, og fontstørrelse inden du "drawer" i din dbgrid og så begynder det at blive rigtigt grimt. Hvor mange piexel fylder 10 linier med arial font size 10 og Times New Roman size 11 ????
det er jo ikke fordi den dybe talerken skal opfindes her, navision finacel er et eksempel på en dbgrid, som viser tekst fra memo felter, men nu er programmørene til det også proffer, så de har jo en fordel, men det viser jo at det godt kan lade sig gøre
jeg kender ikke navision Finaciel, men du kan få componter der kan løse din opgave. Sjovt nok koster de penge :-) Hvis du kan vente til senere kan jeg da prøve at bakse en løsning sammen til dig.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.