Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2015, 18:36   #1
Plankin
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 16
По умолчанию Нужна помощь по Form-мам Delphi xe7

Нужна помощь.
Я только начинаю осваивать программирование, так что звание «чайника» еще не претендую.
Суть проблемы: есть список названий Form, и мне надо взять это название с Мемо, запихнуть его в цикл и поменять какое-нибудь свойство. Например «Top» :=200.
Я понимаю что «FindComponent» нужен для уже созданых на форма компонентов, какую команду написать надо?
Что то типа
FindComponent(Name + ‘.Top’) := 200 – ну это грубо.

Код:
nit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Unit2, Unit3, Unit4, Unit5, Unit6;

procedure TForm1.Button1Click(Sender: TObject);
var i :Integer;
begin
for i := 0 to Memo1.Lines.count do
  begin
   ///   Что написать всместо   "FindComponent"
 // FindComponent(Memo1.Lines[i] + '.top') := 200;
  end;


end;

Последний раз редактировалось Plankin; 27.03.2015 в 18:44.
Plankin вне форума Ответить с цитированием
Старый 27.03.2015, 18:41   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

тогда уж
FindComponent(Name).Top := 200
Sibedir вне форума Ответить с цитированием
Старый 27.03.2015, 18:47   #3
Plankin
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 16
По умолчанию

Ошибку выдает.

скрин .

Да и свойство надо поменять у формы, а не на компонентах в ней.


Ссылка на исходник, сюда размер недает вставить.

https://yadi.sk/d/y17ySCOSfZdEL
Изображения
Тип файла: jpg Снимок.JPG (25.7 Кб, 62 просмотров)

Последний раз редактировалось Plankin; 27.03.2015 в 19:44.
Plankin вне форума Ответить с цитированием
Старый 27.03.2015, 19:22   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Потому что нужно приведение типов:
Код:
TForm1(FindComponent(...)).Top:=...;
Но ты поосторожнее с такими методами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.03.2015, 19:38   #5
Plankin
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 16
По умолчанию

Пробывал непрокатовает.
Plankin вне форума Ответить с цитированием
Старый 27.03.2015, 19:38   #6
Plankin
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 16
По умолчанию

Попробую объяснить подробней. На Form1 лежит Memo. В нем списков названий форм
Form1
Form2
Form3
И т.д
Создан цикл
For i:=0 to 3 do
Begin
Сюда надо написать, что бы бралось название формы из линии Memo и форме менялось какое-нибудь свойство, например Top, или .Captoin := ‘Привет из Касимова!’
End;


Формы уже созданы.
Plankin вне форума Ответить с цитированием
Старый 27.03.2015, 19:54   #7
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

У Application есть, вроде, свойство Forms. (я за планшетом сейчас)
Sibedir вне форума Ответить с цитированием
Старый 27.03.2015, 20:20   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
У Application есть, вроде, свойство Forms.
У Screen есть такое свойство
Цитата:
Сюда надо написать, что бы бралось название формы
Код:
for i:=0 to Screen.FormsCount-1 do
 if Screen.Forms[i].name=Memo.Lines[такое-то] then begin
  Screen.Forms[i].Caption:='Чему-то';
 end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.03.2015, 20:20   #9
Plankin
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 16
По умолчанию

Я подожду пока за комп не сядешь, я там на верху кидал ссылку не архив исходника (https://yadi.sk/d/y17ySCOSfZdEL ), в нем всего 40 строк, глянь. что с ним можно зделать.
Plankin вне форума Ответить с цитированием
Старый 27.03.2015, 20:24   #10
Plankin
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 16
Смех

Не то. .

Последний раз редактировалось Plankin; 27.03.2015 в 20:35.
Plankin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi XE5-XE7 Android нужны Учебники, Уроки,Статьи, любая помощь в изучении FomAW Общие вопросы Delphi 14 11.10.2014 01:08
Delphi - нужна помощь Psi_X Помощь студентам 11 05.02.2009 14:59
Нужна помощь на Delphi ВЕКО Помощь студентам 1 19.04.2008 15:48
Нужна помощь по Delphi Виктория 1 Фриланс 5 25.02.2007 21:21