powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
15 сообщений из 15, страница 1 из 1
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841665
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть много форм, на которых размещен один и тот же фрейм.
Клик по кнопке фрейма производит расчет и должен передать в родительскую форму какой-то переменной (во всех формах может быть разное имя переменной) полученное значение.
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841673
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830,

"один и тот же фрейм" это абстракция. На самом деле, как правило, ты жмакаешь разные кнопки на разных фреймах (см. классы и и их экземпряры). Точно так же с формами. Есть класс формы и экземпляр формы.

Созданный фрейм (экземпряр) ты можешь прилепить разным формам. Тогда жмаканье по кнопке на фрейме приведёт к реакции всех форм, к которым этот фрейм привязан.
________
Читай про Parrent & Owner
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841681
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все формы разные
На них есть есть Grid, под ним Label, отображающий кол-во записей в DataSet Grid-а
Имя Grid и Label на всех формах разные
Frame успешно понимает имя Grid-а на активной форме и при фильтрации определяет кол-во оставшихся записей в DataSet.
Нужно передать это кол-во в Caption Label формы, в которой вызывался Frame.
Операторы
Код: pascal
1.
2.
MyRecCount:=IntToStr(AGrid.DataSource.DataSet.RecordCount);
TLabel(Parent.FindChildControl('Label2')).Caption:=MyRecCount;


успешно передают на родительскую форму кол-во записей.
Но в другой форме может быть свое имя метки
Вот в этом и загвоздка
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841683
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист? Тогда сделай эвент или делегат во фрейме которые будут дергаться по окончании расчёта. А в формах назначай эвент/передавай делегат где и присваивай значение нужной переменной
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841684
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фрейм (компонент) не должен управлять компонентами за областью своей видимости
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841687
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr, это через почему?
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841694
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

А если надо?
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841704
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830DimaBr,
А если надо?
Ты не можешь управлять другим человеком. Ты можешь сказать что он должен сделать и он делает. Но делает это он сам !!!

Фрейм не может управлять другими компонентами (не своими), он может лишь сказать (через событие), что готов отдать данные.
А другой компонент (Label) забирает данные.
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841866
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мало того, фрейм по хорошему не должен держать данные у себя
он нужен для их визуализации
поэтому
берем данные, создаем фрейм, он получает ссылку на данные
если нужно, вводим фрейму события, и делаем на них обработчики
но в итоге, даже после убийства фрейма, данные должны остаться с вами
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39841995
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня все получилось
На какой-то форме есть Grid, под ним метка LabelRc с кол-вом строк в текущем DataSet
На этой же форме помещен "поисковичек" с кнопкой фильтрации по значению ComboBox
Для подключения его к обслуживанию этого Grid-а по событию OnTitleClick используется вызов процедуры
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
procedure TFrame5.GridTitleClick(Column: TColumn; LblRc: TLabel);
Var
  I :Integer;
begin
  LabelRc:=LblRc;
  LblRecCount:=LblRc.Name;
  GrName:=Column.Grid.Name;
  if ((AGrid<>Nil) and (GrName<>AGrid.Name)) then
     ClearSmtFltr;
  AGrid:=Column.Grid as TDBGrid;
  if Not CheckBox1.Checked then
    for I := 0 to AGrid.Columns.Count-1 do
       AGrid.Columns[I].Title.Font.Style:=FontDialog1.Font.Style;
  AGrid.SelectedField:=Column.Field;
  Column.Title.Font.Style:=[fsBold];
  if Length(Column.Title.Caption)>0 then
    begin
      Label1.Caption:=Column.Title.Caption;
      FldName:=Column.FieldName;
      BitBtn1.Enabled:=True;
      BitBtn2.Enabled:=True;
      BitBtn3.Enabled:=True;
      BitBtn4.Enabled:=True;
      Button1.Enabled:=True;
      Button2.Enabled:=True;
      CheckBox1.Enabled:=True;
      if Column.Field.DataType<>ftString then
         Begin
          Button3.Enabled:=True;
         End
      Else
         Begin
          Button3.Enabled:=False;
         End;
    end;
  ComboBox1.SetFocus
end; 



А установка нового значения кол-ва записей в DataSet Grid-а в метке родительской формы после установки фильтра по кнопке "поисковичка" осуществляется
Код: pascal
1.
2.
  RecCount:=IntToStr(AGrid.DataSource.DataSet.RecordCount);
  TLabel(Parent.FindComponent(LabelRc.name)).Caption:=RecCount;
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39842122
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gator,

Все зависит от того, как передавать во фрейм данные.
Можно добиться, что фрейм будет реагировать только на родительскую форму
См. пример
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39842128
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830У меня все получилось
Код: pascal
1.
procedure TFrame5.GridTitleClick(Column: TColumn; LblRc: TLabel);


Ваше решение противоречит первоначальному условию.
Изначально вы хотели чтобы фрейм управлял внешней Меткой, а в решении подсовываете фрейму конкретную метку которой нужно управлять.
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39842130
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,
Очевидно, что Вы не поняли задачи
Именно так и нужно было, что при активизации фрейма, которому сообщили имя Grid-а и метки, он мог бы ими управлять.
Отыскивать нужную запись, фильтровать, подсчитывать сумму...
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39842139
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изначально фрейму никакого имени не сообщалось. Вы просто пытались управлять меткой на Parent-е
m830
Код: pascal
1.
2.
MyRecCount:=IntToStr(AGrid.DataSource.DataSet.RecordCount);
TLabel(Parent.FindChildControl('Label2')).Caption:=MyRecCount;
...
Рейтинг: 0 / 0
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
    #39842193
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830> Можно добиться, ...

что фрейм сможет реагировать на что угодно.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]