|
| Farvede linier Fra : Henning Madsen |
Dato : 07-10-02 09:52 |
|
Jeg må indrømme at jeg ikke forstår ret meget af dette program , men det
virker.
Problemet er at programmet automatisk køre når det startes op.
Hvordan får jeg det til at køre, når der klikkes på en Button knap ?
Et svar skåret ud i pap vel være dejligt.
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
Var
T,F : Integer;
begin
// Det er forudsat at MultiSelect og ExtendedSelect er sat til False.
If Edit3.Text = '1' Then F := clRed; //Farven på linien.
If Edit3.Text = '5' Then F := clWhite; //Farven på linien.
T := StrToInt(Edit2.Text); //Linienummeret der skal farves.
with ListBox1 do
begin
begin
If (Index = T) Then canvas.brush.Color := (F); //clWhite; //clRed;
end;
canvas.fillrect(rect); //tegn baggrundsfarven
canvas.textout(rect.left, rect.top, items[index]); //skriv teksten
end;
end;
På forhånd tak
----
Med venlig hilsen
Henning Madsen
| |
Harald (07-10-2002)
| Kommentar Fra : Harald |
Dato : 07-10-02 12:34 |
|
"Henning Madsen" <henning.k.madsen@teliamail.dk> skrev i en meddelelse
news:3da14c32$0$389$d40e179e@nntp01.dk.telia.net...
> Jeg må indrømme at jeg ikke forstår ret meget af dette program , men det
> virker.
> Problemet er at programmet automatisk køre når det startes op.
> Hvordan får jeg det til at køre, når der klikkes på en Button knap ?
> Et svar skåret ud i pap vel være dejligt.
Først fjerner du henvisningen til ListBox1DrawItem i din Object Inspector,
derefter indtaster du følgende kode til din Button:
ListBox1.OnDrawItem:=ListBox1DrawItem;
Mvh
HK
> procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
> Rect: TRect; State: TOwnerDrawState);
> Var
> T,F : Integer;
> begin
> // Det er forudsat at MultiSelect og ExtendedSelect er sat til False.
> If Edit3.Text = '1' Then F := clRed; //Farven på linien.
> If Edit3.Text = '5' Then F := clWhite; //Farven på linien.
> T := StrToInt(Edit2.Text); //Linienummeret der skal farves.
> with ListBox1 do
> begin
> begin
> If (Index = T) Then canvas.brush.Color := (F); //clWhite; //clRed;
> end;
> canvas.fillrect(rect); //tegn baggrundsfarven
> canvas.textout(rect.left, rect.top, items[index]); //skriv teksten
> end;
> end;
| |
Thomas Due (08-10-2002)
| Kommentar Fra : Thomas Due |
Dato : 08-10-02 07:12 |
|
> Problemet er at programmet automatisk køre når det startes op.
> Hvordan får jeg det til at køre, når der klikkes på en Button knap ?
> Et svar skåret ud i pap vel være dejligt.
Det jeg ville gøre vare at indføre en variabel som hændelsen checker på:
TForm1 = Class(TForm)
// komponenter
ListBox1DrawItem(...);
private
FCustomDraw : Boolean;
// andre ting
public
// andre ting
end;
Se efter // ---- INDSAT ---- // mærker.
> procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
> Rect: TRect; State: TOwnerDrawState);
> Var
> T,F : Integer;
> begin
// ---- INDSAT ---- //
if FCustomDraw then
begin
// ---- INDSAT ---- //
> // Det er forudsat at MultiSelect og ExtendedSelect er sat til False.
> If Edit3.Text = '1' Then F := clRed; //Farven på linien.
> If Edit3.Text = '5' Then F := clWhite; //Farven på linien.
> T := StrToInt(Edit2.Text); //Linienummeret der skal farves.
> with ListBox1 do
> begin
> begin
> If (Index = T) Then canvas.brush.Color := (F); //clWhite; //clRed;
> end;
> canvas.fillrect(rect); //tegn baggrundsfarven
> canvas.textout(rect.left, rect.top, items[index]); //skriv teksten
> end;
// ---- INDSAT ---- //
end;
// ---- INDSAT ---- //
> end;
Derefter tildeler du en OnClick event til din button og skriver f.eks.:
TForm1.Button1OnClick(Sender : TObject);
begin
FCustomDraw := not FCustomDraw;
end;
Så har du en on/off toggle button som slår funktionen til og fra.
--
Thomas Due
Software Developer
Scanvaegt Nordic A/S
| |
|
|