Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  352

•  TDictionary Custom Sort  3 493

•  Fast Watermark Sources  3 240

•  3D Designer  5 005

•  Sik Screen Capture  3 493

•  Patch Maker  3 699

•  Айболит (remote control)  3 898

•  ListBox Drag & Drop  3 162

•  Доска для игры Реверси  82 876

•  Графические эффекты  4 098

•  Рисование по маске  3 392

•  Перетаскивание изображений  2 764

•  Canvas Drawing  2 915

•  Рисование Луны  2 721

•  Поворот изображения  2 335

•  Рисование стержней  2 227

•  Paint on Shape  1 626

•  Генератор кроссвордов  2 307

•  Головоломка Paletto  1 823

•  Теорема Монжа об окружностях  2 328

•  Пазл Numbrix  1 718

•  Заборы и коммивояжеры  2 093

•  Игра HIP  1 315

•  Игра Go (Го)  1 262

•  Симулятор лифта  1 510

•  Программа укладки плитки  1 259

•  Генератор лабиринта  1 582

•  Проверка числового ввода  1 402

•  HEX View  1 535

•  Физический маятник  1 387

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Циклический опрос компонентов



Сидит вечером программист у компота и третий час подряд кликает на свою мышь. Сзади подходит жена:
- Дорогой, может меня лучше покликаешь?
Программист, бешено колотя кулаком по мыши:
- Блин, кликалка у меня не работает.


procedure TForm1.FormCreate(Sender: TObject);
var
  I: integer;
begin
  for I:= 0 to ComponentCount -1 do
    if (Components[I] IS TEdit) then
      (Components[I] AS TEdit).{Вашпараметр} := {ваше значение};
end; 

Если вам необходимо идентифицировать конкретный набор edit-компонентов, поместите их на панели и сделайте примерно так:


procedure TForm1.FormCreate(Sender: TObject);
var
  I: integer;
begin
  with MyPanel do
    for I:= 0 to ControlCount -1 do
      if (Controls[I] IS TEdit) then
        (Controls[I] AS TEdit).{Вашпараметр} := {Ваше значение};
end;

В контексте примера, Edit1, Edit2 и т.д. есть то же самое, что и Edit[1], Edit[2]. Если вы хотите иметь доступ к серии элементов управления как к элементам массива, поместите их в TList.


MyArr := TList.Create;
MyArr.Add(Edit1);
MyArr.Add(Edit2);

...

For i := 0 To MyArr.count - 1 Do
  (MyArr.items[i] As TEdit).Enabled := False;

MyArr.Free;


procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to ComponentCount -1 do
    if Components[I] is TEdit then
      TEdit(Components[I]).Whatever := 10;
end;

Для получения доступа используйте:


TButton(mylist.items[i]).property := sumpin; 

или


TButton(mylist.items[i]).method; 

Это хорошее решение для пакетной обработки компонентов или для получения доступа при линейном способе. Для решения вашей проблемы есть еще более легкое решение, которое требует предварительной работы в режиме проектирования. Установите свойство tag и получите преимущество в том, что все компоненты являются производными от TComponent и имеют это свойство.


Procedure TMyForm.MyButtonHandler(Sender: TObject);
Begin
  Case (Sender As TComponent).Tag Of
    1: { что-то делаем }
    2: { делаем что-то еще }
    .
    .
  End;
End;

Просто укажите в событии OnClick на MyButtonHandler для тех кнопок, в которых вы хотите использовать общий обработчик события.








Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте