- *Lazarus *publicВот есть 7 окошек Memo, от Memo1 до Memo7. А как их циклом перебрать?? типа как:
for i:=1 to 7 do memo[i]:= 'hello'#1929823from Psi+, 22 days ago
Replies (41)
- @trminator:у формы есть коллекция, мнэ... Components со всеми её компонентами. Ну и как-то for i := 1 to Form1.ComponentsCount {вроде и такое есть} do {посмотреть на Form1.Components[i].Name и решить, чего с этим сделать}#1929823/4from Miranda, 22 days ago
- @hohoho:for I := 0 to Form.ComponentCount — 1 do
if Form.Components[I] is TMemo then {нашли мемо. работаем так: TMemo(Form.Components[I]).Clear;}#1929823/5from ╭╧╮╭╧╮, 22 days ago - @hohoho:@hohoho + на почитать: delphikingdom.ru
там есть про то, как работать с компонентами в динамике и немного про RTTI#1929823/11from ╭╧╮╭╧╮, 22 days ago, in reply to /10 - @hohoho:@murrrf
function TComponent.FindComponent(const AName: string): TComponent;
var
I: Integer;
begin
if (AName <> '') and (FComponents <> nil) then
for I := 0 to FComponents.Count — 1 do
begin
Result := FComponents[I];
if SameText(Result.FName, AName) then Exit;
end;
Result := nil;
end;
собственно, любой поиск будет циклом. даже по классовым ссылкам#1929823/21from ╭╧╮╭╧╮, 22 days ago, in reply to /20 - @murrrf:@hohoho Tag — довольно-таки бесполезное свойство.
Вот пример из личной практики. Форма, на форме матрица 10×10 индикаторов, отображающих состояние некоторого набора данных. Данные обновились, нужно переключить пятый индикатор во второй строке и третий — в четвертой. Кроме как перебором всех индикаторов, заранее обозванных как Led0101, Led0102, Led0209, Led0210, задачу не решить. Медленно, а куда деваться?
И даже если перебирать по тэгу, куда засунуты эти же цифры, получится та же скорость.#1929823/24from api, 22 days ago, in reply to /23 - @trminator:@murrrf а почему не засунуть эти индикаторы в свою матрицу?#1929823/26from Miranda, 22 days ago, in reply to /24
- @hohoho:@trminator незачем. 100 проходов — это некритичный перебор
вот когда речь заходит о прогоне по 10к элементам, да с вложенными циклами — тогда да, нужно переосмыслять алгоритм#1929823/27from ╭╧╮╭╧╮, 22 days ago, in reply to /26 - @hohoho:@Veresk на самом деле циклы часто отщелкиваются быстро, ибо есть оптимизации и отсечения итераций с неудовлетворяющими условиями.
медленно всегда выходит, если нужно перевыделить память (строки — привет), либо имеется длительная функция внутри тела цикла#1929823/30from ╭╧╮╭╧╮, 22 days ago, in reply to /28 - @murrrf:@trminator В каком смысле засунуть индикаторы в матрицу?#1929823/31from api, 22 days ago, in reply to /26
- @trminator:@murrrf array[1..10, 1..10] of TIndicator#1929823/33from Miranda, 22 days ago, in reply to /31
- @murrrf:@hohoho Даже если оставить в стороне тот факт, что программа была написана лет пять назад, никуда не деться от того, что она отображает и переключает состояние набора данных некоей железяки, с доступом к каждому отдельному биту, и чтоб кнопочка была покрупнее, а то заказчик близорук.#1929823/34from api, 22 days ago, in reply to /32
- @murrrf:@trminator Ну, что-то в этом есть, хотя в начале работы нужно связывать контролы на форме с элементами матрицы/создавать элементы матрицы на форме. Впрочем, дело уже прошлое.#1929823/36from api, 22 days ago, in reply to /33
- @trminator:@murrrf раз прошлое и работает, то и не надо ворошить, конечно. А так всё равно контролы поди создаются при создании формы динамически, заодно там же засунуть их в массив было бы одной лишней строчкой, а потом зато их искать не надо было бы. Хотя мне тут не видно всего, конечно.#1929823/39from Miranda, 22 days ago, in reply to /36
- @murrrf:@trminator Может, уже и не работает — железку могли и списать, а без железки программа бесполезна.#1929823/41from api, 22 days ago, in reply to /39