Tipy a triky v Delphi, díl 94.

Dnešní tip bude spíše pro začátečníky, ale možná pomůže i ostatním čtenářům. Naučíme se hromadně měnit vlastnosti komponent.
Již několikrát jsem dostal dopis s dotazem, jak například hromadně zapínat či vypínat Hinty u komponent. Nejen u všech najednou, ale třeba jen u tlačítek. A nebo jak nějaké komponenty naráz zneviditelnit a podobně. Všechno se to týká stejného problému, kterým je hromadná změna určitých vlastností komponent. A to si přesně dneska ukážeme.

Samotný postup je vlastně velmi jednoduchý, nejedná se o nic mimořádného, ale právě podobné drobnosti často začátečníky mohou trápit. Pro celou akci si vytvoříme proceduru, která bude mít jako parametry jednak typ komponenty, jejíž vlastnosti budeme měnit, dále jméno této vlastnosti a konečně její číselnou hodnotu. V samotném těle procedury pak najdeme cyklus, který postupně projde všechny komponenty z našeho formuláře a má-li pro danou komponentu změna požadovaného parametru smysl (tj. takový parametr vůbec pro komponentu existuje), provede ji.

Zde tedy následuje kompletní zdrojový kód. Ten tentokrát obsahuje i deklarace řady prvků, které nejsou vlastně nijak funkčně využity (konkrétně je to dvakrát Label a Edit a jednou Memo). Ty jsou v kódu umístěny pochopitelně pouze ze zkušebních důvodů jak bude příklad fungovat a můžete použít cokoliv podle vlastní potřeby.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure SetProperties(ClassName, Prop: string; Value: Integer);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SetProperties(ClassName, Prop: string; Value: Integer);
var
  i: integer;
  PropInfo: PPropInfo;
  Component: TComponent;
begin
  for i := 0 to ComponentCount - 1 do
  begin
    Component := Components[i];
    if (Component is TControl) and ((Component.ClassName = ClassName) or (ClassName = `AllComponents`)) then
    begin
      PropInfo := GetPropInfo(Component.ClassInfo, Prop);
      if Assigned(PropInfo) then SetOrdProp(Component, PropInfo, Integer(Value));
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetProperties(`AllComponents`, `ShowHint`, 0);
  SetProperties(`TEdit`, `visible`, 0);
  SetProperties(`TMemo`, `Enabled`, 0);
  SetProperties(`TLabel`, `Autosize`, 1);
end;

end.

Na konci zdrojáku můžete vidět i jednoduchý příklad použití jako událost stisku tlačítka. První řádek vypne zobrazování již v úvodu zmiňované bublinkové nápovědy pro všechny komponenty, druhý řádek zajistí zmizení (zneviditelnění) všech komponent Edit z formuláře, třetí řádek "disabluje" komponenty Memo a poslední řádek zapne vlastnost Autosize pro všechny komponenty Label.

Váš názor Další článek: Intel zlevnil mobilní procesory

Témata článku: Software, Windows, Programování, Druhý řád, Trik, Díl, Label


Určitě si přečtěte

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

** Pornografie údajně představuje třetinu internetové obsahu a je technologický tahounem ** Do erotického obsahu postupně zasahuje i virtuální realita ** Kromě vizuálního vjemu se pracuje také na virtuálním uspokojení toho hmatového

Jan Dudek | 28

Blíží se Juno. Jeden z nejhezčích Linuxů pro normální lidi

Blíží se Juno. Jeden z nejhezčích Linuxů pro normální lidi

** Ubuntu a Fedora patří k nejpopulárnějším linuxovým OS pro desktop ** A pak je tu zástup dalších nebo jejich odvozenin ** Jedním z nich je Elementary OS, který se brzy dočká novinek

Jakub Čížek | 71

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

** Systém Windows 10 umí spoustu užitečných drobností ** O mnoha praktických funkcích pravděpodobně ani nevíte ** Poznejte užitečné tipy, které se vám mohou hodit každý den

Vladislav Kluska | 33

Našli jsme 22 schopných internetových prohlížečů: Vyberte si, který vám nejvíc sedne

Našli jsme 22 schopných internetových prohlížečů: Vyberte si, který vám nejvíc sedne

** Není jen Chrome, Firefox, Edge či Opera. Na výběr máte mnohem více! ** Internetové prohlížeče se liší funkcemi, zaměřením i designem. Našli jsme 22 použitelných prohlížečů pro Windows ** Vyberte si prohlížeč, který vám bude nejvíce vyhovovat

Karel Kilián | 30

Šéf amerického Red Hatu: Odpojte Brno od internetu a zhroutíme se

Šéf amerického Red Hatu: Odpojte Brno od internetu a zhroutíme se

** V Česku najdete hromadu skvělých vývojářů ** Mnozí z nich přispívají do open-source ** Třeba v brněnském Red Hatu

Jakub Čížek | 51

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

** Dlouho se nevědělo, co to přesně má být ** Pak se s krabičkou Google pochlubil na I/O ** Do „Chromecastu“ vtěsnal celý Android TV

Jakub Čížek | 22


Aktuální číslo časopisu Computer

Kdy necháme řídit chytrá auta?

6 Wi-Fi Mesh systémů ve velkém testu

Srovnali jsme 7 sportovních kamer

Znáte pravidla pro létání s drony?