|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#46
|
||||
|
||||
Я про ресурсы. Я не настолько туп, что не умею оптимизировать код под свою прогу
|
#47
|
||||
|
||||
Погоди минутку.
Ну так я там цифры попутал Код:
// идентификаторы #define ID_POPUPMENU $1000 #define ID_POPUP0 $1010 #define ID_POPUP1 $1020 #define ID_POPUP2 $1030 #define ID_POPUP3 $1040 // Popup menu ID_POPUPMENU MENUEX BEGIN POPUP "Item1" ID_POPUP0 BEGIN MENUITEM "SubItem1", ID_POPUP1 MENUITEM "SubItem2", ID_POPUP2 MENUITEM "SubItem3", ID_POPUP3 END END Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 05.12.2012 в 22:22. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (06.12.2012)
|
#48
|
||||
|
||||
Есть контакт! А как теперь подключить файл ресурсов и обрабатывать щелчки по элементам?
|
#49
|
||||
|
||||
Подключаешь стандартно {$R res.res}
обрабатывать в WM_COMMAND Код:
WM_COMMAND : begin case LOWORD(wParam) of ID_POPUP : ; // что-то делаем end; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 06.12.2012 в 00:12. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (06.12.2012)
|
#50
|
||||
|
||||
Что за отдельный файл?)
|
#51
|
||||
|
||||
Создаю файл rc.inc и подключаю там и там.
rc.inc Код:
// идентификаторы const ID_POPUPMENU = $1000; ID_POPUP0 = $1010; ID_POPUP1 = $1020; ID_POPUP2 = $1030; ID_POPUP3 = $1040; Код:
#include "rc.inc" // Popup menu ID_POPUPMENU MENUEX BEGIN POPUP "Item1" ID_POPUP0 BEGIN MENUITEM "SubItem1", ID_POPUP1 MENUITEM "SubItem2", ID_POPUP2 MENUITEM "SubItem3", ID_POPUP3 END END Код:
{$I rс.inc} {$R rс.res} Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (06.12.2012)
|
#52
|
||||
|
||||
Да, удобно
Вот решил пока с .rc подождать и освоить принцип отображения и обработки PopupMenu, все прекрасно отображается, но события не происходят. Прикрепил исходник, посмотрите. Заранее спасибо. |
#53
|
||||
|
||||
Неа, с ресурсом удобнее меньше писать. Сейчас погляжу.
Подправил. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 06.12.2012 в 02:01. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (06.12.2012)
|
#54
|
||||
|
||||
Спасибо большое)
|
#55
|
||||
|
||||
Странно, открыл диспетчер задач, при непрерывном изменении размера формы ЦП нагружается на 8-10%, почему так?
|
#56
|
||||
|
||||
И еще одно, лазил в гугле, так и не нашел решения, как через GetOpenFileName добавить пути файлов в ListBox, вот что у меня есть на данный момент:
Код:
var OpenFile: TOpenFileName; Buf: PChar; begin GetMem(Buf, 130); with OpenFile do begin lStructSize := SizeOf(OpenFile); hWndOwner := hInstance; lpstrfilter := 'MP3 Файлы' + #0 + '*.mp3' + #0#0; nMaxCustFilter := 255; nFilterIndex := 1; lpstrFile := Buf; nMaxFile := 128; lpstrFileTitle := nil; lpstrInitialDir := nil; lpstrTitle := OpenDlgCap; Flags := OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_ALLOWMULTISELECT or OFN_EXPLORER end; if GetOpenFileName(OpenFile) then MessageBox(0, Buf, 'File', mb_ok); // при выборе нескольких файлов вообще не чего не выводится FreeMem(Buf, 130) end; Последний раз редактировалось sariman, 06.12.2012 в 19:25. |
#57
|
||||
|
||||
Описание GetOpenFileName в качестве объекта и заполнение ListView. С ListBox-ом аналогично.
в юните Код:
type TFileName = type String; TOpenDialog = Object Parent : HWND; FileName : TFileName; Filter : String; DefaultExt : String; Title : String; InitialDir : String; Files : TStringList; function Execute : Boolean; end; ... function TOpenDialog.Execute : Boolean; var szFile : array[0..MAX_PATH - 1] of Char; OFN : TOpenFileName; TempFilter : String; function ExtractLine(const S : String) : String; var P : String; I : Integer; begin for I := 1 to Length(S) do if S[i] = '|' then P := P + #0 else P := P + S[i]; Result := P + #0; end; begin FillChar(OFN, SizeOf(OFN), 0); FillChar(szFile, SizeOf(szFile), 0); OFN.lStructSize := SizeOf(TOpenFilename); OFN.hwndOwner := Parent; OFN.hInstance := hInstance; OFN.lpstrTitle := PChar(Title); TempFilter := ExtractLine(Filter); OFN.lpstrFilter := PChar(TempFilter); OFN.lpstrFile := szFile; OFN.Flags := OFN_EXPLORER or OFN_PATHMUSTEXIST or OFN_HIDEREADONLY or OFN_FILEMUSTEXIST or OFN_ENABLEHOOK or OFN_ENABLESIZING; OFN.nMaxFile := MAX_PATH; if (InitialDir = '') then OFN.lpstrInitialDir := '.' else OFN.lpstrInitialDir := PChar(InitialDir); Result := GetOpenFileName(OFN); if Result then FileName := szFile; end; Код:
var OD : TOpenDialog; ... OD.Parent := Wnd; OD.Title := 'Open file(s)'; OD.Filter := 'Playable files|*.mo3;*.xm;*.mod;*.s3m;*.it;*.mtm;*.umx;*.mp3;*.mp2;*.mp1;*.ogg;*.wav;*.aif|' + 'AIFF - aif|*.aif|' + 'Modules - mo3/xm/mod/s3m/it/mtm/umx|*.mo3;*.xm;*.mod;*.s3m;*.it;*.mtm;*.umx|' + 'Ogg Vorbis - ogg|*.ogg|' + 'MPEG - mp3/mp2/mp1|*.mp3;*.mp2;*.mp1|' + 'WAVE - wav|*.wav|' + 'All files|*.*'; OD.DefaultExt := '*.*'; OD.Options := [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofOldStyleDialog, ofEnableSizing]; ... // Диалог открытия файла if OD.Execute then begin // заполняем ListView for I := 0 to OD.Files.Count - 1 do with ListView.Items.Add do begin Caption := IntToStr(I + ListView.Items.Count); SubItems.Add(OD.Files.Strings[i]); end; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 06.12.2012 в 22:31. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
sariman (06.12.2012)
|
#58
|
||||
|
||||
В смысле в юните? Создавать отдельно? Да и я же на чистом WinAPI пишу.
Последний раз редактировалось sariman, 06.12.2012 в 23:48. |
#59
|
||||
|
||||
И что, чем это мешает созданию отдельных юнитов и классов? Тот же TStringList, используемый в TOpenDialog, у меня выдран частями из исходников Дельфи и в нём убрано всё, что относится к Forms, Classes и остальным раздувающим выходной файл.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#60
|
||||
|
||||
А можете скинуть если не трудно этот юнит? Просто зачем изобретать уже изобретенное
|