Scrollbars Synchroniseren

Status
Niet open voor verdere reacties.

ingenieur

Gebruiker
Lid geworden
16 nov 2010
Berichten
8
.. ik schrijf een programma waarmee je met 3 ScrollBars de R, G en B waarden kunt instellen. Die worden dan gebruikt om de resulterende kleur naar een TMemo veld te sturen. Dan heb ik nog een vierde ScrollBar waarmee de R, G, en B waarden tegelijkertijd worden geregeld. Nu wil ik het zo krijgen dat dan de andere drie schuifjes van de eerste drie Scrollbars mee gaan bewegen. Hoe zou ik dit aan moeten pakken? Een schuifje wordt pas op de goede posite gezet als je met de muis op de betreffende ScrollBar klikt. Ik zou dus vanuit de procedure van de vierde ScrollBar de andere drie aan moeten roepen .. ?

En:
procedure TFormKleuren.ScrollBarRoodWaardeScroll(Sender: TObject;
ScrollCode: TScrollCode; var p: Integer);
Sender is een variabele van het type TObject. Dit begrijp ik ook niet .. :eek:

Dan nog een vraag die ik al eerder stelde met betrekking tot dit programma; ik laat met Random R, G en B waarden genereren die dan resulteren in een willekeurige kleur. De waarden worden in drie Edit vensters getoond:
UitvoerschermRWaarde.Text:=FloatToStr(R);
Deze opdracht staat in een ButtonClick procedure. Dus bij elke muisklik krijg ik een willekeurige kleur. Als ik diezelfde opdracht in een lus opneem gebeurt er niets. De lus wordt wel doorlopen maar alleen de laatste waarde die R aanneemt wordt in het venster gezet. Ik begrijp dat niet.

Wie wel? :)
 
Het is opgelost:

Code:
unit Kleuren;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TFormKleuren = class(TForm)
    KnopRandomStart: TButton;
    UitvoervensterR:       TEdit;
    UitvoervensterB:       TEdit;
    UitvoervensterG:       TEdit;
    UitvoervensterK:       TMemo;
    ScrollBarG:            TScrollBar;
    ScrollBarB:            TScrollBar;
    ScrollBarRGB:          TScrollBar;
    PanelR:                TPanel;
    PanelG:                TPanel;
    PanelB:                TPanel;
    PanelK:                TPanel;
    Panel1:                TPanel;
    Panel2:                TPanel;
    CheckBox1:             TCheckBox;
    CheckBoxR:             TCheckBox;
    CheckBoxG:             TCheckBox;
    CheckBoxB:             TCheckBox;
    KnopRandomStop: TButton;
    ScrollBarSleep: TScrollBar;
    procedure KnopRandomStartClick(Sender: TObject);
    procedure ScrollBarRScroll(Sender: TObject;
      ScrollCode: TScrollCode; var p: Integer);
    procedure FormActivate(Sender: TObject);
    procedure ScrollBarGScroll(Sender: TObject;
      ScrollCode: TScrollCode; var p: Integer);
    procedure ScrollBarBScroll(Sender: TObject;
      ScrollCode: TScrollCode; var p: Integer);
    procedure ScrollBarRGBScroll(Sender: TObject;
      ScrollCode: TScrollCode; var p: Integer);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBoxRClick(Sender: TObject);
    procedure CheckBoxGClick(Sender: TObject);
    procedure CheckBoxBClick(Sender: TObject);
    procedure KnopRandomStopClick(Sender: TObject);
    procedure ScrollBarSleepScroll(Sender: TObject;
      ScrollCode: TScrollCode; var p: Integer);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

const max=255;
var
  FormKleuren      : TFormKleuren;
  s                : integer;
  r,g,b,i          : byte;
  Rood,Groen,Blauw : boolean;
  CheckBox         : boolean;
  CheckBoxRood     : boolean;
  CheckBoxGroen    : boolean;
  CheckBoxBlauw    : boolean;
  MetLusDoorgaan   : boolean;

implementation

{$R *.dfm}

procedure TFormKleuren.CheckBox1Click(Sender: TObject);
begin
  If CheckBox=True then CheckBox:=False else
    CheckBox:=True;
  FormKleuren.Color:=RGB(235,235,235);
end;

procedure TFormKleuren.CheckBoxRClick(Sender: TObject);
begin
   If CheckBoxRood=True then CheckBoxRood:=False else
    CheckBoxRood:=True;
end;

procedure TFormKleuren.CheckBoxGClick(Sender: TObject);
begin
   If CheckBoxGroen=True then CheckBoxGroen:=False else
    CheckBoxGroen:=True;
end;

procedure TFormKleuren.CheckBoxBClick(Sender: TObject);
begin
  If CheckBoxBlauw=True then CheckBoxBlauw:=False else
    CheckBoxBlauw:=True;
end;

procedure TFormKleuren.KnopRandomStartClick(Sender: TObject);
begin
   REPEAT
      Randomize; r:=Random(max)+1; g:=Random(max)+1; b:=Random(max)+1;
      UitvoervensterR.Text:=IntToStr(r);
      UitvoervensterG.Text:=IntToStr(g);
      UitvoervensterB.Text:=IntToStr(b);
      UitvoervensterK.Color:=RGB(r,g,b);
      If CheckBox then Formkleuren.Color:=RGB(r,g,b);
      application.processmessages;
      sleep(s);
   UNTIL Not MetLusDoorgaan;
   MetLusDoorgaan:= Not MetLusDoorgaan;
   Rood:=true; Groen:= true; Blauw:=true;
end;

procedure TFormKleuren.KnopRandomStopClick(Sender: TObject);
begin
  MetLusDoorgaan:=false;
end;

procedure TFormKleuren.ScrollBarSleepScroll(Sender: TObject;
  ScrollCode: TScrollCode; var p: Integer);
begin s:=p; end;

procedure TFormKleuren.ScrollBarRScroll(Sender: TObject;
 ScrollCode: TScrollCode; var p: Integer);
begin if Rood then p:=r;
  UitvoervensterR.Text:=IntToStr(p);
  UitvoervensterG.Text:=IntToStr(g);
  UitvoervensterB.Text:=IntToStr(b);
  UitvoervensterK.Color:=RGB(r,g,b);
  If CheckBox then Formkleuren.Color:=RGB(r,g,b);
  r:=p; Rood:=not Rood;
end;

procedure TFormKleuren.ScrollBarGScroll(Sender: TObject;
  ScrollCode: TScrollCode; var p: Integer);
begin if Groen then p:=g;
  UitvoervensterR.Text:=IntToStr(r);
  UitvoervensterG.Text:=IntToStr(p);
  UitvoervensterB.Text:=IntToStr(b);
  UitvoervensterK.Color:=RGB(r,g,b);
  If CheckBox then Formkleuren.Color:=RGB(r,g,b);
  g:=p; Groen:= not Groen;
end;

procedure TFormKleuren.ScrollBarBScroll(Sender: TObject;
  ScrollCode: TScrollCode; var p: Integer);
begin if Blauw then p:=b;
  UitvoervensterR.Text:=IntToStr(r);
  UitvoervensterG.Text:=IntToStr(g);
  UitvoervensterB.Text:=IntToStr(p);
  UitvoervensterK.Color:=RGB(r,g,b);
  If CheckBox then Formkleuren.Color:=RGB(r,g,b);
  b:=p; Blauw:= not Blauw;
end;

procedure TFormKleuren.ScrollBarRGBScroll(Sender: TObject;
  ScrollCode: TScrollCode; var p: Integer);
begin
  if CheckBoxRood then
    begin r:=p;
       UitvoervensterK.Color:=RGB(r,g,b);
       if CheckBox then FormKleuren.Color:=RGB(r,g,b);
    end;
   if CheckBoxGroen then
    begin g:=p;
       UitvoervensterK.Color:=RGB(r,g,b);
       if CheckBox then FormKleuren.Color:=RGB(r,g,b);
    end;
   if CheckBoxBlauw then
    begin b:=p;
       UitvoervensterK.Color:=RGB(r,g,b);
       if CheckBox then FormKleuren.Color:=RGB(r,g,b);
    end;
  UitvoervensterR.Text:=IntToStr(r);
  UitvoervensterG.Text:=IntToStr(g);
  UitvoervensterB.Text:=IntToStr(b);
end;

procedure TFormKleuren.FormActivate(Sender: TObject);
begin
  r:=1; g:=1; b:=1; s:=0;
  Rood          :=false;
  Groen         :=false;
  Blauw         :=false;
  CheckBox      :=false;
  CheckBoxRood  :=false;
  CheckBoxGroen :=false;
  CheckBoxBlauw :=false;
  MetLusDoorgaan:=true;
  UitvoervensterR.Text:=IntToStr(r);
  UitvoervensterG.Text:=IntToStr(g);
  UitvoervensterB.Text:=IntToStr(b);
  UitvoervensterK.Color:=RGB(r,g,b);
end;

end.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan