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

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

Созданный фрейм (экземпряр) ты можешь прилепить разным формам. Тогда жмаканье по кнопке на фрейме приведёт к реакции всех форм, к которым этот фрейм привязан.
________
Читай про Parrent & Owner
...
Рейтинг: 0 / 0
25.07.2019, 22:44
    #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
25.07.2019, 22:50
    #39841683
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
Программист? Тогда сделай эвент или делегат во фрейме которые будут дергаться по окончании расчёта. А в формах назначай эвент/передавай делегат где и присваивай значение нужной переменной
...
Рейтинг: 0 / 0
25.07.2019, 22:50
    #39841684
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
Фрейм (компонент) не должен управлять компонентами за областью своей видимости
...
Рейтинг: 0 / 0
25.07.2019, 22:55
    #39841687
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
DimaBr, это через почему?
...
Рейтинг: 0 / 0
25.07.2019, 23:13
    #39841694
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
DimaBr,

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

Фрейм не может управлять другими компонентами (не своими), он может лишь сказать (через событие), что готов отдать данные.
А другой компонент (Label) забирает данные.
...
Рейтинг: 0 / 0
26.07.2019, 13:11
    #39841866
krapotkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
мало того, фрейм по хорошему не должен держать данные у себя
он нужен для их визуализации
поэтому
берем данные, создаем фрейм, он получает ссылку на данные
если нужно, вводим фрейму события, и делаем на них обработчики
но в итоге, даже после убийства фрейма, данные должны остаться с вами
...
Рейтинг: 0 / 0
26.07.2019, 16:11
    #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
26.07.2019, 23:22
    #39842122
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать переменной на произвольной форме значение из фрейма, размещенного на ней
Gator,

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


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

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


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