Avatar billede -bomann- Nybegynder
01. maj 2002 - 09:11 Der er 15 kommentarer og
1 løsning

Farve på række i et HyperGrid

Hvordan sætter man en farve (ex. vis rød) for en hel række i et HyperGrid ved klik på en knap eller invalid input data???
Avatar billede stoney Nybegynder
01. maj 2002 - 10:28 #1
Er HyberGrid en component ?

Stoney
Avatar billede -bomann- Nybegynder
01. maj 2002 - 12:13 #2
Ja
Avatar billede borrisholt Novice
01. maj 2002 - 13:25 #3
som man finder hvor ?

Jens B
Avatar billede -bomann- Nybegynder
01. maj 2002 - 13:33 #4
http://www.marleyware.com/marley/documents/index.htm

Overstående URL viser en beskrivelse af komponenten :))
Avatar billede borrisholt Novice
01. maj 2002 - 13:38 #5
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  if aRow <> 2 then
    exit;
  StringGrid1.Canvas.brush.Color := clred;
  StringGrid1.Canvas.FillRect(Rect);
end;

Jens B
Avatar billede stoney Nybegynder
01. maj 2002 - 13:41 #6
THyperGrid is an enhanced grid component. It descends from TStringGrid and, therefore, supports all of its standard methods and properties.

Hvis ovenstående passer så prøv at kigge på OnDrawCell

Stoney
Avatar billede stoney Nybegynder
01. maj 2002 - 13:42 #7
Arrh Jens,
Du er sgu for hurtig :-)

Stoney
Avatar billede -bomann- Nybegynder
01. maj 2002 - 13:51 #8
Jeg må hellere uddybe problemstillingen:

Når der indtastes en værdi i en celle for en given række i HyperGrid'et bliver der udregnet en Brutto Avance Procent, og er denne negativ skal alle rækkens celler have en rød baggrundsfarve men man skal stadig kunne se dataene i cellen. Efterfølgende skal de oprindelige farver i cellerne genoprettes når input dataene giver en positiv brutto avance :))
Avatar billede -bomann- Nybegynder
01. maj 2002 - 13:54 #9
Det må meget gerne virke fra en OnClick event på en knap...
Avatar billede borrisholt Novice
01. maj 2002 - 14:16 #10
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    aRowToColor : Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  if aRow <> aRowToColor then
    exit;
  StringGrid1.Canvas.brush.Color := clred;
  StringGrid1.Canvas.FillRect(Rect);
end;



procedure TForm1.BitBtn1Click(Sender: TObject);
var
  s : String;
begin
  s := IntToStr(aRowToColor);
  if InputQuery('I der, Hest og Hund', 'Hvilken række skal farves rød ?', s) then
    aRowToColor := StrToIntDef(s, 2);
  StringGrid1.Repaint;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  aRowToColor := -1;
end;

end.


Jens B
Avatar billede borrisholt Novice
01. maj 2002 - 14:37 #11
så er du sq nok nød til at stave det for mig !
Avatar billede -bomann- Nybegynder
01. maj 2002 - 14:38 #12
Indholdet i cellen overskrives når denne farves med FillRect...

/Thomas
Avatar billede borrisholt Novice
01. maj 2002 - 14:46 #13
Så prøv den her :
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  if aRow <> aRowToColor then
    exit;
  if aRowToColor < 0 then
    exit;
  with StringGrid1 do
  begin
    Canvas.brush.Color := clred;
    Canvas.FillRect(Rect);
    Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
  end;
end;
Avatar billede -bomann- Nybegynder
01. maj 2002 - 15:03 #14
Okay, det er nok til at få det til at virke - dog en fusket måde :)

Jeg ville give dit svar 100 ud af de 200 hvis jeg kunne...

/Thomas
Avatar billede borrisholt Novice
01. maj 2002 - 15:06 #15
fusket måde ?

Det er da den måde som komponenten SELV tegner teksten på !

Jens B
Avatar billede -bomann- Nybegynder
01. maj 2002 - 15:17 #16
Det er ikke måden komponenten tegner cellen der er fusket - det er den omstændige måde man sætter en anden baggrundsfarve i en celle.

Det havde været nemmere med en property ala StringGrid1.Cells[1,1].Color:=clRed

:))
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