Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
1

Свое диалоговое окно с репликацией

12.04.2016, 16:33. Показов 2460. Ответов 34
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте!
Извините если не правильно назвал тему. Мне нужно сделать диалоговое окно так чтобы его можно было вызывать 2 и более раз из самого себя. Может кто помочь. Как решить. Ведь форму как по идеи нельзя дважды открыть так чтобы были обе открыты.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2016, 16:33
Ответы с готовыми решениями:

Как вызвать свое диалоговое окно?
Сделал диалоговое окно в designer from PyQt5 import QtCore, QtGui, QtWidgets class...

Встроить свое окно в окно чужой программы
Что то я не могу допереть как такое можно организовать,Хочу свое окно в чужую программу...

Диалоговое окно
Нужно создать диалоговое окно,добавить статик текст и сделать так чтобы при нажатии на кнопку текст...

Диалоговое окно
Можно как нибудь вызвать вот это диалоговое окно переключения ?

34
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
14.04.2016, 07:21  [ТС] 21
Author24 — интернет-сервис помощи студентам
Индификатор например
\V[ИД Скрипта]
ИД Скрипта и есть индифкатор ну или
\n<Текст>
Текст и есть индификатор
Извините. Неправильный перевод. Нажимать нужно правую кнопку мыши и добавить скрипт
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
14.04.2016, 08:01 22
https://ru.wikipedia.org/wiki/Идентификатор

Добавлено через 57 секунд
нажал
потыкал
закрыл
что-то должно было произойти?
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
14.04.2016, 08:11  [ТС] 23
Вот небольшое видео
https://yadi.sk/d/eMRPaUaDqyNmK
Ошибка от параметров не зависит.
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
14.04.2016, 08:38 24
ну так удалите же глобальные свои переменные
если вы заводите новых друзей и временных знакомых. вы же не вписываете номера их телефонов в одну и ту же запись "новый знакомый"?
еще раз
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TSomeForm.SomeEvent(...);
var f:TMyForm;
begin
  f:=TMyForm.Create;
  try
    if f.ShowModal=mrOk then
    begin
      DoSomethingCool();
    end;
  finally
    FreeAndNil(f);
  end;
end;
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
14.04.2016, 09:01  [ТС] 25
У меня диалогов будет которые будут иметь добавить скрипт более трех. И это для каждого свой вызхов.
Темболее что я пробовал не использовать глобальные переменные. Итог ошибка функции вызова диалога так как эта функция использует глобальную переменную формы темболее она находится в модуле диалога и задает текст окна и параметры кнопок. Так что не знаю как можно оптимально сделать. Не вызывать же каждый раз в каждом дилоге взов формы и настройку параметров формы.
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
14.04.2016, 09:30 26
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
более трех
и что?
это меняет то, что вы используете одну и ту же глобальную переменную для разных копий формы?

и почему нельзя
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
вызывать же каждый раз в каждом дилоге взов формы и настройку параметров формы
?
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
14.04.2016, 09:37  [ТС] 27
Ну просто если использовать локальную то в форме в самой форме как обращатся к ней?
Пример нужен?
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
14.04.2016, 09:45 28
после f.showModal до f.free используйте f как хотите
а хотите вы использовать форму для ВВОДА данных
а для их хранения используются структуры данных в памяти и даже в БД
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
14.04.2016, 09:49  [ТС] 29
Ну для этого 1 функции достаточно или каждвый раз в каждом диалоги?
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
14.04.2016, 09:54 30
я не знаю, о какой ф-ии идет речь
отвлекитесь от форм
представьте, что ваша "функция" звонит в кремль по телефону и готова отдать вам результат разговора
достаточно этого вам или нет?
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
14.04.2016, 09:59  [ТС] 31
Просто у меня на форме присутствуют кнопки и их код который не выводит данные а служит переключением данных. К томуже как мне возвращзать данные если внутри диалога не может быть функций.
Можете пример мне написать настоящего диалогового окна которое вернет несколько значений и которое можно вызвать несколько раз.
Ну как я понял это вот так делать:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
Function ShowDialog(Component : TComponent) : Boolean
var f1 : tform2;
begin
   f1 := TForm2.Crteate(Component);
   //Настройка компонентов
   if f1.ShowModal = mrOk then
   BEGIN
      //Берем значения в переменных модуля
      //Уничтожаем форму
   END;
end;
 
Но если У кнопки ОК например стоит в ModalResult mrOk и есть событие которые все данные из компонентов заносит в переменные. Закроет ли такая кнопка форму?
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
14.04.2016, 10:28 32
ну вот прямо из головы
форма ввода логина/пароля , там может быть шрифт/цвет


Delphi
1
2
3
4
5
6
7
unit UMyClasses;
type
TCredentials=record
  user:string;
  pass:string;
end;
...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
unit UMyForm;
interface
  uses UMyClasses;
type
TMyForm=class(TForm)
  eUser:TEdit;
  ePass:TEdit;
public
  function SaveToModel:TCredentials;
  procedure Init(C:TCredentials);
end;
 
function TMyForm.SaveToModel:TCredentials;
begin
  result.user := eUser.Text;
  result.pass := ePass.Text;
end;
 
procedure TMyForm.Init(C:TCredentials);
begin
  eUser.Text := c.User;
  ePass.Text := c.Pass;
end;

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TMainForm=class(TForm)
...
  Cred:TCredentials;
..
end;
 
procedure TMainForm.ShowLogin;
var
  f:TMyLogin;
begin
  f:=TMylogin.Create(NIL);
  try
    f.init(cred);
    if f.showmodal()=mrOk then
    begin
       cred:=f.SaveToModel();
    end;
  finally
    f.free;
  end;
end;
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
14.04.2016, 10:29  [ТС] 33
Не знаю правильно ли я сделал
Delphi
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Function ShowDialogParamScripts(IDXScripts : Integer; IDXTypeScripts: Byte; CompontsShowFrm: TComponent):AnsiString;
var frmNewDlgWindow : TfrmDAddNewWindowsScripts;
  astr:AnsiString;
Begin
  if IDXTypeScripts >= 1 then
    Result := TextsScripts1[IDXScripts]
  else begin
    case IDXScripts of
      0:
      begin
        frmNewDlgWindow := TfrmDAddNewWindowsScripts.Create(CompontsShowFrm);
        if frmNewDlgWindow.ShowModal = mrOk then
          astr := frmNewDlgWindow.GetScriptsNewWindow
        else
          astr := '';
        if frmDAddNewWindowsScripts <> nil then
          FreeAndNil(frmNewDlgWindow);
        Result := astr;
      end;
    end;
  end;
End;
 
Function ShowAddScripts(CompontsShowFrm: TComponent):AnsiString;
var IndexScript : integer;
  IndexTypeScript : Byte;
  formAddScripts : TfrmDAddScripts;
begin
  IndexScript := 0;
  IndexTypeScript := 0;
  formAddScripts := TfrmDAddScripts.Create(CompontsShowFrm);
  formAddScripts.Caption := 'Добавление скрипта | Выберите скрипт:';
  formAddScripts.idScripts := IndexScript;
  formAddScripts.idTypeScripts := IndexTypeScript;
  formAddScripts.GetTextScripts;
  if formAddScripts.ShowModal = mrOk then begin
    formAddScripts.GetIdAndTypeScripts(IndexScript, IndexTypeScript);
    if formAddScripts <> nil then
      FreeAndNil(formAddScripts);
    Result := ShowDialogParamScripts(IndexScript, IndexTypeScript, CompontsShowFrm);
  end;
end;
procedure TfrmDAddScripts.GetIdAndTypeScripts(var IdxScripts: Integer;
  var IdxTypeScripts: Byte);
begin
  IdxScripts := idScripts;
  IdxTypeScripts := idTypeScripts;
end;
 
procedure TfrmDAddScripts.GetTextScripts;
var i : integer;
begin
  case idTypeScripts of
    0:
    begin
      BitBtn1.Enabled := False;
      BitBtn2.Enabled := True;
      LBS.Items.Clear;
      for i := 0 to Length(LbsTextsScripts2)-1 do
        LBS.Items.Add(LbsTextsScripts2[i]);
    end;
    1:
    begin
      BitBtn1.Enabled := True;
      BitBtn2.Enabled := False;
      LBS.Items.Clear;
      for i := 0 to Length(LbsTextsScripts1)-1 do
        LBS.Items.Add(LbsTextsScripts1[i]);
    end;
  end;
end;
function TfrmDAddNewWindowsScripts.GetScriptsNewWindow: AnsiString;
begin
  Result := ScrMV+chrScrStyle+chrScrTextPosition+chr0+Memo1.Text+chr1;
end;
Но все работает испытал на 2х диалогах тоесть вызвал два раза AddNewWindowsScripts диалог ап главное второй раз вызвал из тойже формы
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
14.04.2016, 10:32 34
в деталях не разобрал, но идея вроде та
0
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
14.04.2016, 10:37  [ТС] 35
Ну могу кинуть исходный код как закончу. Самое пожалуй сложное это диалоги делать. Скриптов очень много.
0
14.04.2016, 10:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2016, 10:37
Помогаю со студенческими работами здесь

Диалоговое окно
Привет. Только начал со всем этим разбираться и немного застопорился. Не могу сделать так, что бы...

Диалоговое окно
Подскажите функцию которая вызывает простое окошко, где текст, например, вы точно хотите удалить...

Диалоговое окно
Доброе время суток! подскажите как совместить этот код .RowSource = &quot;=A2:D2&quot; с этим Private...

диалоговое окно
необходимо создать что-то вроде alertdialog с двумя кнопками, но так, что-бы они &quot;не мешали&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru