Programmeren met Delphi  1  

Naar start   

 

Een knop veranderen tijden het runnen.

Als eerste wil ik een probleempje aanpakken. De tekst van een knop op een form van vorm laten veranderen wanneer de muiscursor op de knop staat. Wanneer we op de form een standaardknop plaatsen, is het eenvoudig bij de eigenschappen de knopnaam te veranderen door bij caption een andere tekst in te typen.

Wanneer we het project runnen, moeten we eerst de form onder een naam bewaren en tevens het project. De knop staat netjes op de form, als je er met de muiscursor op staat gebeurt er niets, ook niet wanneer je erop klikt. Logisch want we hebben geen enkele actie gedefinieerd (geprogrammeerd). Wanneer we stoppen door de form te sluiten komen we weer in onze programmeeromgeving. We klikken op de knop en gaan naar de tab events van de object inspector. Hierin hebben we het event OnMouseMove. Dubbelklik in het lege veld naast deze tekst.  In de Pascal source verschijnt de procedure. Voeg de volgende regel toe:

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
    button1.font.style:=[fsBold];
end;

Wanneer we het programma weer laten lopen zal de tekst van de knop vet worden wanneer de muiscursor op de knop terecht komt. Deze blijft ook vet als de cursor ergens anders staat. In de events staat geen actie die ervoor kan zorgen dat de knop weer normaal wordt. We zullen dit op een andere manier moeten oplossen. Bij form1 staat bij events ook OnMouseMove. Wanneer we dit dubbelklikken krijgen we de volgende procedure in onze pascalsource voeg hier ook een regel aan toe.

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
    button1.font.style:=[];
end;

Na het runnen zien we dat het werkt wat ik me voorstelde. Zoals we zien zijn de eigenschappen van een object belangrijk. We kunnen deze veranderen tijdens de uitvoering van het programma. Het is mij bij een standaard knop niet gelukt om de kleur van de tekst te veranderen. Bij een BitBtn is dit geen probleem. Probeer dit maar. Doe dezelfde handelingen als bij de gewone standaard knop.

procedure TForm1.BitBtn1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
    bitbtn1.font.style:=[fsBold];
    bitbtn1.Font.color:=clred;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
    button1.font.style:=[];
    bitbtn1.font.style:=[];
    bitbtn1.Font.color:=clblack;
end;