Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "WinAPI";
Поточний архів: 2004.12.12;
Завантажити: [xml.tar.bz2];

Вниз

Де знайти модуль для модальних діалогів? Знайти схожі гілки


Erik1 ©   (2004-10-29 11:44) [0]

У Delphi при створенні модальних діалогів насправді створюється форма. У деяких прикладах можуть бути неприємні наслідки перекриття цього діалогу іншою формою. Причому фокус введення залишиться на діалозі. Крім того потрібно змінити написи на кнопках, тому стандартний діалог windows неподходіт. Мої можливі кнопки (mbOk, mbYes, mbNo, mbAbort, mbRetry, mbIgnore, mbCancel, mbHelp). Я пробував користуватись MessageBoxEx (..., LANG_ESTONIAN) але щось незароблених. Тому хочу використати WinApi модальний діалог.



clickmaker ©   (2004-10-29 12:04) [1]

DialogBox ()



Erik1 ©   (2004-10-29 12:46) [2]

А какже ресури, цикл черги повідомлень і WindowProc? Наверніка доведеться час подратіть поки отладіш, а якщо врахувати що кнопочки цінтровать треба ... Я на для UI на чистому API ніколи неписані, думаю наверника є готовий модуль, челую бібліотеку заради одного діалогу завантажувати нехочу.



clickmaker ©   (2004-10-29 13:03) [3]


> Я на для UI на чистому API ніколи неписані, думаю наверника
> Є готовий модуль

Чистий апі на те і чистий, що там немає готових модулів. все ручками



Erik1 ©   (2004-10-29 14:58) [4]

А ось і ні, на C ++ я вже нашол "універсальне діалогове вікно" http://rsdn.ru/article/ui/custombox.xml
Тепер треба на Delphi переробити, що ніукого прикладу нешащлось?



Erik1 ©   (2004-10-29 16:35) [5]

Як створити 32bit ресурсний фаил? Мнеб просто приклад ресурсу для діалогового вікна з 6 кнопок.



Ученик   (2004-10-30 22:43) [6]

Заміна тексту на кнопках стандартного MessageBox :-)

var hHook: THandle = 0; procedure ChangeButtonCaption (Dialog: HWnd; ControlID: Integer; const Caption: string); begin SetWindowText (GetDlgItem (Dialog, ControlID), PChar (Caption)) end; function ChangeCaptionsProc (nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; begin Result: = CallNextHookEx (hHook, nCode, wParam, lParam); if nCode = HCBT_ACTIVATE then begin ChangeButtonCaption (wParam, IDYES, "Так"); ChangeButtonCaption (wParam, IDNO, "Ні"); ChangeButtonCaption (wParam, IDCANCEL, "Скасування"); UnhookWindowsHookEx (hHook) end end; function MessageBoxRus (hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; begin hHook: = SetWindowsHookEx (WH_CBT, @ChangeCaptionsProc, hInstance, GetCurrentThreadID); Result: = MessageBox (hWnd, lpText, lpCaption, uType); end;



Игорь Шевченко ©   (2004-10-30 23:04) [7]

Учень (30.10.04 22: 43) [6]

А я форму чесно зробив свого часу. Яка по CreateMessageDialog з dialogs.pas створюється :)



GuAV ©   (2004-10-30 23:41) [8]

Ігор Шевченко © (30.10.04 23: 04) [7]
А я форму чесно зробив свого часу. Яка по CreateMessageDialog з dialogs.pas створюється :)


Так там Ваш код? :)



Игорь Шевченко ©   (2004-10-31 00:13) [9]

GuAV © (30.10.04 23: 41) [8]

>
> Так там Ваш код? :)


Ні, я приблизно такий код писав :)

const SMsgDlgYes = "Так"; SMsgDlgNo = "Ні"; function hs_MessageDlgPos (const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer; begin with CreateMessageDialog (Msg, DlgType, Buttons) do try Caption: = Application.Title; HelpContext: = HelpCtx; Position: = poMainFormCenter; (FindComponent ( "Yes") as TButton) .Caption: = SMsgDlgYes; (FindComponent ( "No") as TButton) .Caption: = SMsgDlgNo; Result: = ShowModal; finally Free; end; end;



GuAV ©   (2004-10-31 00:20) [10]

А сенс ? чи не легше було викликати Application.MessageBox або виправити ресурси?



Игорь Шевченко ©   (2004-10-31 13:29) [11]

GuAV © (31.10.04 00: 20) [10]

Чи не легше. Application.MessageBox, так само, як і Windows.MessageBox ще й звук грає, а мені це не потрібно.


> Або виправити ресурси?


А це ще нафіга?



Игорь Шевченко ©   (2004-10-31 13:30) [12]

Забув додати: MessageBox показує написи на кнопках відповідно до конкретної локалізацією Windows, а у мене стояло завдання, щоб написи показувалися на російській незалежно від локалізації Windows.



GuAV ©   (2004-10-31 13:41) [13]

зрозумів.



Erik1 ©   (2004-11-01 10:34) [14]

to Учень
Велике спасибі, в принципі я навіть нідел приклад на C ++, але думав що витрати на написання будуть більше. А вийшло дуже просто!



Erik1 ©   (2004-11-01 10:39) [15]

вилучено модератором
Примітка: дубль



сторінки: 1 вся гілка

Форум: "WinAPI";
Поточний архів: 2004.12.12;
Завантажити: [xml.tar.bz2];

Вгору





Пам'ять: 0.6 MB
Час: 0.064 c
14-1101217496
копір
2004-11-23 16:44
2004.12.12
Back in USSR?


14-1100832492
Думкіна
2004-11-19 05:48
2004.12.12
З Днем народження! 19 листопада


6-1096822363
Wolverrum
2004-10-03 20:52
2004.12.12
ADO і CGI


1-1100774315
Саша
2004-11-18 13:38
2004.12.12
Колір виділених осередків в StringGrid


9-1091606822
ландграф Павло
2004-08-04 12:07
2004.12.12
пошук шляху не по клітинам ...





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська