ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

[Delphi] Как вывести диалог из компонента?
  #1  
Старый 12.05.2010, 10:18
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию [Delphi] Как вывести диалог из компонента?

Всем доброго времени суток! Вопрос такой. Как вывести диалог из компонента, причем вывести так, что выполнение дальнейшего кода продолжится, пока не закроешь диалог? Диалог примерно такой:

 
Ответить с цитированием

  #2  
Старый 12.05.2010, 10:41
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

ShowModal или что-то в таком духе. Дельфи почти забыл. Для форм был такой метод.
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #3  
Старый 12.05.2010, 10:58
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

как то не очень то хотелось бы пихать модуль Forms в компоент. Диалог должен состоять из панели.
 
Ответить с цитированием

  #4  
Старый 12.05.2010, 11:25
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

WinAPI?
Панель то ты куда-то должен поместить
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #5  
Старый 12.05.2010, 11:35
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

а будет ли грамотно, если в компоненте будет такой код:

Код:
uses frmDialogs;

...

function TidVKClient.Login(): boolean;
begin
  { код логина }
 // если капча, показать диалог
 Dlg.ShowModal; 
 { продолжение выполнения кода }
end;
 
Ответить с цитированием

  #6  
Старый 12.05.2010, 13:46
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

Не хочешь подключать формс к своему классу - просто создай событие у своего компонента типа TidVKClient.OnCatcha. В обработчик этого события передавай stream с пикчей, а тот кто будет использовать твой компонент извне - будет обрабатывать событие, например либо капчу показать в модальном окне, либо отправить на антигейт и т.п.
 
Ответить с цитированием

  #7  
Старый 12.05.2010, 14:43
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

так ведь надо же еще выполнение код приостановить как то о_О
 
Ответить с цитированием

  #8  
Старый 12.05.2010, 15:53
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

Репутация: 175
Отправить сообщение для Chrome~ с помощью ICQ
По умолчанию

ShowModal в данном случае будет нормально.
 
Ответить с цитированием

  #9  
Старый 12.05.2010, 15:57
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

так и сделал)) помог следующий код:

Код:
// ---- Вывод диалога ввода кода капчи ----
procedure TidVKClient.ShowCaptchaDialog(const captcha_sid: string);
var
  MS  : TMemoryStream;
  Jpg : TJpegImage;
begin
   Ms  := TMemoryStream.Create;
   Jpg := TJpegImage.Create;
   Get('http://vkontakte.ru/captcha.php?s=1&sid=' + captcha_sid, Ms);
   Ms.Position := 0;
   Jpg.LoadFromStream(ms);
   DlgForm.imgKey.Picture.Graphic := Jpg;
   Jpg.Free;
   Ms.Free;
   DlgForm.Caption := 'Enter Code';
   DlgForm.ShowModal;
end;
однако меня этот uses Forms; не улыбает вовсе
 
Ответить с цитированием

  #10  
Старый 12.05.2010, 16:38
Jingo Bo
Познающий
Регистрация: 25.10.2009
Сообщений: 97
Провел на форуме:
604635

Репутация: 15
По умолчанию

Цитата:
однако меня этот uses Forms; не улыбает вовсе
Раз не нравится сделай панель в памяти по данным dfm файла твоего диалога(всё ручками), потом с winapi создавай обычное окно без заголовка и через Windows.SetParent на то окно лепи панельку.

P.S. Если уж делаешь компонент, то делай универсальнее и более гибкий код. Кстати вышеуказаный код должен быть в таким
Код:
// ---- Вывод диалога ввода кода капчи ----
procedure TidVKClient.ShowCaptchaDialog(const captcha_sid: string; const notice : String = 'Enter Code');
var
  MS  : TMemoryStream;
  Jpg : TJpegImage;
begin
   Ms  := TMemoryStream.Create;
   Jpg := TJpegImage.Create;
   try
     Get('http://vkontakte.ru/captcha.php?s=1&sid=' + captcha_sid, Ms);
     Ms.Position := 0;
     Jpg.LoadFromStream(ms); {при не правльных данных здесь может вылезть эксцепшн}
     //DlgForm.imgKey.Picture.Graphic := Jpg; {не верно, нужно делать через Assign, ибо будет утечка памяти и при хз что будет когда Jpg сделают Free}
     DlgForm.imgKey.Picture.Assign(Jpg); {Делфи под боком нет, так что не помню, на Graphic или сразу на Picture Assign делать)}
   finally  
     Jpg.Free;
     Ms.Free;
   end;
   DlgForm.Caption := notice;
   DlgForm.ShowModal;
end;
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Халявный Интернет (для маленьких) stopxaker Статьи 91 20.04.2010 19:52
Помогите найти историю GrimmJow Болталка 11 05.04.2010 21:34
Халявный интернет или как спрятаться надежнее чем VPN или SSH с цепочкой соксов. kodzero Статьи 16 16.11.2009 20:23
Как стать хакером! foreva Болталка 19 12.12.2007 00:12



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ