Avatar billede Slettet bruger
15. april 2001 - 22:13 Der er 13 kommentarer og
1 løsning

True False Sand Falsk Paradox

Jeg har lavet nogle paradoxdatabase hvor man et sted kan indtaste ja nej. Dette bliver til true/false, da det er en boolean i databasen. Jeg kunne godt tænke mig at den viste det i min dbgrib som sand falsk i stedet for true false. Kan I hjælpe mig her?
Avatar billede hotshot Nybegynder
15. april 2001 - 23:34 #1
Jeg kan ikke se andet end at du selv må lave omformningen, når du henter i databasen.
Noget ala
  if databaseudtræk = true then
    udsagn := sand
  else
    udsagn := falsk;
Avatar billede nico26 Nybegynder
16. april 2001 - 00:53 #2
Lav en eventhandler til OnDrawDataCell i DBGridet der ser cirka sådan her ud:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if Field.DisplayText = \'False\' then
    DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, \'Falsk\')
  else if Field.DisplayText = \'True\' then
    DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, \'Sandt\');
end;
Avatar billede nico26 Nybegynder
16. april 2001 - 00:56 #3
det virker selfølgelig kun runtime - håber du kan bruge det aligevel

nico
Avatar billede Slettet bruger
16. april 2001 - 11:15 #4
> NICO
du har helt sikkert fat i noget af det rigtige, problemet er bare at det ikke funger. Den skal tjekke ALLE cellerne i dbgridet, men der virker sgu ikke :(. Måske skal man sammenligne med den table der ligger bag eller?
Avatar billede martinlind Nybegynder
16. april 2001 - 11:48 #5
Hvis du Runtime tilknytter nogle event på ongettext og onsettext på dine DBField\'s så kan du gøre lige hvad du vil med dine data inden du viser dem på skærmen og inden de bliver gemt igen, så jeg vil anbefale dig at bruge dem, men de ligger på dine fields, dvs hvis du lukker og åbner dit dataset skal du lige assigne dem igen eller også skal du loade dine fields DesignTime og lave det hele DesignTime det kan du også ( Hvilket jo er nemere hvis du ikke har prøver det andet før )

/Martin
Avatar billede nico26 Nybegynder
16. april 2001 - 12:49 #6
smukkemanny>>sker der slet ikke noget? Jeg testede med en tabel med tre records, og det virkede fint
Avatar billede Slettet bruger
16. april 2001 - 13:11 #7
nice>> der sker rent faktisk ikke noget, den kan satens compile det, men den gider sgu ikke lige at ændre det. Kan du ikke være noget med nogle properties for min dbgrid der måske er sat forkert? Desuden står der meget i min dbgrid, og den skulle gerne teste alle rækkerne. Det er lidt lort, for det er det eneste der mangler i mit ellers så smukke program :)
Avatar billede nico26 Nybegynder
16. april 2001 - 13:37 #8
jeg har lavet en paradox tabel med to felter - et af dem med boolske værdier. Så har jeg en TTable, TDataSource og en DBGrid på formen. Jeg mener ikke jeg har ændret nogle properties ud over OnDrawDataCell
Avatar billede Slettet bruger
16. april 2001 - 15:13 #9
nico > det er faktisk rigtigt, jeg lavede også selv lige et hurtigt program, jeg ved ikke hvad jeg har gjort galt i det andet, jeg prøver mig frem.
Avatar billede Slettet bruger
16. april 2001 - 15:35 #10
OK nu er jeg kommet frem til problemets kerne. Hvis man laver en columneditor på dbgrid\'en virker det IKKE. Og det er nødvendigt for mig at lave dette, så problemet er kun løst halvt
Avatar billede nico26 Nybegynder
16. april 2001 - 15:47 #11
jeg skal nok kigge på det.
Avatar billede nico26 Nybegynder
16. april 2001 - 15:54 #12
Brug OnDrawColumnCell i stedet for

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if Column.Field.DisplayText = \'False\' then
    DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, \'Falsk\')
  else if Column.Field.DisplayText = \'True\' then
    DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, \'Sandt\');
end;
Avatar billede Slettet bruger
16. april 2001 - 15:58 #13
YES. Det virker :)) 1000 tak for hjælpen
Avatar billede martinlind Nybegynder
17. april 2001 - 09:03 #14
smukkemanny >> Det er 100 gange nemere at gøre det på field\'s GetText i stedet for at ligge og lave ownerdraw i din dbgrid, det virker jo ikke hvis du vil vise det i en edit-box, det gør den anden løsning også.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester