• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Работа с фреймами

  • Автор темы Shouldercannon
  • Дата начала
S

Shouldercannon

Помогите, пожалуйста, одолеть фреймы. Сколько делал подходов и никак не могу с ними совладать.
Хочу из из какого-либо контрола Frame прочитать/записать/показать данные, но на практике это не так просто.
Если бы
Код:
procedure TFormMain.BShowClick(Sender: TObject);
begin
// Показать данные из frame_Settings из TEdit
  ShowMessage(FrameSettings.Edit1.Text); // Не катит
end;
но увы.
Так создаю фремы и показываю их
Код:
unit frm_Main;

...

var
  FormMain: TFormMain;
  LastFrame: TFrame;

implementation

uses frame_Settings, frame_Misc;

{$R *.dfm}

procedure TFormMain.FormCreate(Sender: TObject);
begin
  // Создаём список фреймов
  with ListBox1 do
  begin
    AddItem('Настройки', TFrameSettings.Create(ListBox1));
    AddItem('Разное', TFrameMisc.Create(ListBox1));
  end;

  LastFrame := nil;
end;

procedure TFormMain.ListBox1Click(Sender: TObject);
begin
  // Активируем из списка нужный фрейм
  if LastFrame <> nil then LastFrame.Visible := False;

  with TListBox(Sender) do
  begin
    LastFrame := TFrame(Items.Objects[ItemIndex]);
    LastFrame.Align := alClient;
    LastFrame.Parent := Panel1;
    LastFrame.Visible := True;
  end;
end;

procedure TFormMain.BReadClick(Sender: TObject);
begin
// Прочитать данные из frame_Settings из TEdit
end;

procedure TFormMain.BWriteClick(Sender: TObject);
begin
// Записать данные из frame_Settings из TEdit
end;

procedure TFormMain.BShowClick(Sender: TObject);
begin
// Показать данные из frame_Settings из TEdit
  ShowMessage(FrameSettings.Edit1.Text); // Не катит
end;

end.
 

Вложения

  • Frames.zip
    15,6 КБ · Просмотры: 243

Сергей Попов

Кодебай
30.12.2015
4 693
6 588
BIT
344
-master- сказал(а):
Во первых научитесь сразу выкидывать из кода вот такие секции
var
FormMain: TFormMain;
LastFrame: TFrame;
они ничего не значат и только несут вред.
В реальности глобальные переменные нужны в очень редких случаях.
во вторых для чего фреймы создаете динамически?
ну и взаимодействие с фреймаи нужно организовывать, само по себе данные в ваши переменные не попадут.
Нужно либо делать публичные свойства/методы, либо через механизмы событий либо еще как.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!