if btn1.Flat=True then begin ShellExecute(Handle, 'open', 'C:\Programmer\Gembird\Power Manager\pm2.exe', '-on -device3 -socket1', nil, SW_SHOWNORMAL); btn1.Flat:=False end else if btn1.Flat=False then begin ShellExecute(Handle, 'open', 'C:\Programmer\Gembird\Power Manager\pm2.exe', '-off -device3 -socket1', nil, SW_SHOWNORMAL) btn1.Flat:=True end;
if btn1.Font.Color=clGray then begin ShellExecute(Handle, 'open', 'C:\Programmer\Gembird\Power Manager\pm2.exe', '-on -device1 -socket2', nil, SW_SHOWNORMAL); btn1.Font.Color:=clBlack; btn1.Enabled:=False; Timer1.Enabled:=True; end else if btn1.Font.Color=clBlack then begin ShellExecute(Handle, 'open', 'C:\Programmer\Gembird\Power Manager\pm2.exe', '-off -device1 -socket2', nil, SW_SHOWNORMAL); btn1.Font.Color:=clGray; btn1.Enabled:=False; Timer1.Enabled:=True; end
Kan man ikke referere til btn1 relativt, således at samme sætninger kan bruges til btn2, osv... noget lignende PHP_SELF...
Hvor ligger den kode - i en event på din btn1? I så fald skulle jeg mene du kan udnytte at der følger en parameter ved navn Sender med. Denne er et Object som du kan typecaste til en TButton for direkte at henvise til den knap der blev aktivere.
Dvs. du i stedet for
if btn1.Font.Color=clGray then begin
skriver
if TButton(Sender).Font.Color=clGray then begin
Efter dette, kan du i Property Inspector sætte de andre knapper til at bruge prøcist samme event som btn1. Resten klarer sig selv, så længe du husker at erstatte alle referencer.
Sender vil altid referere til den komponent der har modtaget event-kaldet - derfor vil den i en OnTimer altid referere til den Timer der går i gang.
Hvis du vil have en Timer per Button, bør du placere dine Buttons i et array, og sætte Tag-property'en for dine Timers til det index der indeholder den knap du skal bruge.
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.