Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (до версии 2009) - часть 6

Автор: Frodo_Torbins
Дата сообщения: 18.10.2010 18:48
Sarge1978
Не припоминаю, чтобы что то подобное можно было сделать через стандартный WinAPI, а более низкоуровневыми вещами в этом топике вроде никто не занимается.
Автор: Maks150988
Дата сообщения: 19.10.2010 18:06
Всем привет. Есть стандартный ListBox. Есть стандартное сообщение LB_SELITEMRANGE для выделения первого и последнего элемента из диапазона. У меня есть Array of Integer с индексами строчек, которые выбраны в контроле, заполняемый через сообщение LB_GETSELITEMS. Если элемент выбран, значит он > 0, вот это значение выбранного элемента в массиве. Собственно как мне извлечь из массива начальный и конечный выбранный элементы отттуда? На ум ничего не приходит.
Автор: ShIvADeSt
Дата сообщения: 20.10.2010 02:14
Maks150988

Код:
var
Arr:array of integer;
C,i:integer;
begin
C:=SendMessage(ListBox1.Handle,LB_GETSELCOUNT,0,0);
SetLength(Arr,C);
C:=SendMessage(ListBox1.Handle,LB_GETSELITEMS,C,integer(Arr));
Автор: Maks150988
Дата сообщения: 20.10.2010 05:32
ShIvADeSt
А ведь точно, вё гениальное - просто. Я почему-то смотрел на примеры, где выставляли длину масива равную количеству всех элементов, поэтому я сделал такой позорный код для извлечения первого и последнего индекса из кучи:


Код: function GetLastItems(hWnd: THandle): TSmallPoint;
var
i: DWORD;
first: DWORD;
last: DWORD;
count: Integer;
ret: DWORD;
begin
Result.x := DWORD(-1);
Result.y := DWORD(-1);
first := DWORD(-1);
last := DWORD(-1);
count := SendMessageW(hWnd, LB_GETCOUNT, 0, 0);
for i := 0 to count -1 do
begin
ret := SendMessageW(hWnd, LB_GETSEL, i, 0);
if (first = DWORD(-1)) and (ret > 0) then
begin
first := i;
Break;
end;
end;
for i := count -1 downto 0 do
begin
ret := SendMessageW(Wnd, LB_GETSEL, i, 0);
if (last = DWORD(-1)) and (ret > 0) then
begin
last := i;
Break;
end;
end;
Result.x := first;
Result.y := last;
end;
Автор: DmitryKz
Дата сообщения: 24.10.2010 13:59
Как можно программным способом определить количество mip в текстуре (mip level) bmp? Интересует алгоритм в виде функции:
int miplevel=f(путь к bmp-текстуре).
Автор: Reklats59
Дата сообщения: 24.10.2010 16:36
Товарищи, не подскажете, как в Delphi 7 организовать с помощью библиотеки synapsis WWW аутентификацию на сайте по SSL (https://*)?
Автор: Ape
Дата сообщения: 27.10.2010 11:08
Кто знает, объясните что сие значит:
Перенёс проект на другой диск. В свойствах проекта заменил пути доступа к либам.
После этого при компиляции стало выдавать ошибку:

[Pascal Fatal Error] pasall.tmp(1): File not found: 'System.pas'

И открывает файл pasall.tmp с таким содержанием:

program pasall;
Uses Unit1 in 'H:\Project1\Unit1.pas'
, Unit2 in 'H:\Project1\Unit2.pas'
;
begin
end.

Проверил все пути, ошибок нет. Путь к 'System.pas' прописал тоже.
Автор: Frodo_Torbins
Дата сообщения: 27.10.2010 13:50
Ape
Попробуйте этот pasall.tmp удалить совсем, новый должен сгенериться автоматически.
Автор: Yarynich
Дата сообщения: 27.10.2010 19:19
Всем привет!

В программе нужно реализовать клавиатуру для touchscreen-a (Delphi7). Чтобы особо не заморачиваться бросил на панель кнопки с Caption соответствующей буквы. Но вот возникла проблема - кнопка с маленькой буквой "я" не отображает букву. Перепробовал кнопки из нескольких пакетов - то же самое. А вот SpeedButton - показывает. Скорее всего что-то с кодом буквы "я", потому что в Delphi XE , буква на кнопке отображается. (Жаль, TTouchKeyboard работает неадекватно с CapsLock). Пока перейду на SpeedButton. Но возникает вопрос - почему и как с этим бороться?
Автор: nuker2015
Дата сообщения: 27.10.2010 22:32
Yarynich
Цитата:
...Перепробовал кнопки из нескольких пакетов - то же самое. А вот SpeedButton - показывает. Скорее всего что-то с кодом буквы "я"...

XE Является юникодным, D7 - нет. для версий ранее D2009 можно использовать TntUnicode, бесплатную версию ещё можно найти в сети по адресу: http://www.silverpointdevelopment.com/sptbxlib/TntUnicodeControls.zip
должно помочь.
Автор: Ape
Дата сообщения: 28.10.2010 10:32
Frodo_Torbins

Цитата:
Попробуйте этот pasall.tmp удалить совсем, новый должен сгенериться автоматически.

Генерится с таким же содержанием.

Если вернуть проект на прежнее место и восстановить файл проекта, проект компилится без ошибок. Видимо, что-то со структурой файла проекта связано.
Автор: AlexIntegral
Дата сообщения: 29.10.2010 22:29

Цитата:
Товарищи, не подскажете, как в Delphi 7 организовать с помощью библиотеки synapse WWW аутентификацию на сайте по SSL (https://*)?


Вот здесь Вы можете найти нужную информацию на свой вопрос.
Автор: Reklats59
Дата сообщения: 29.10.2010 23:14
AlexIntegral 23:29 29-10-2010
Цитата:
Вот здесь Вы можете найти нужную информацию на свой вопрос.


Я читал это ещё до того, как задать вопрос. Там описана простая авторизация, а мне нужна basic\WWW\http авторизация по SSL.
Автор: bekturov
Дата сообщения: 31.10.2010 10:26
Здравствуйте !
Я тут поднимал проблему по ошибке в дефкаx 53 билда, косячит именно в delphi в С говорят нормально, проектик набросал, не возмется ли кто проверить ?
Автор: MikeZ
Дата сообщения: 31.10.2010 16:59

Цитата:
Если вернуть проект на прежнее место и восстановить файл проекта, проект компилится без ошибок. Видимо, что-то со структурой файла проекта связано.
Грохните «лишние» файлы, кроме dpr, res, dfm, pas и ваших, если есть. Пути потом восстановите вручную. Если настройки проекта какие-то уж оч. тонкие, то время потратите, но должно помочь. «Не найден system.pas» - это проблема с путями в настройках проекта. Нет настроек - нет проблем
P.S. Забекапить не забудьте!
Автор: SXP
Дата сообщения: 01.11.2010 23:58
Есть ListView, хочу спрятать колонку - свойство width=0, как избавиться от такого эффекта (см. скриншот)



и, если избавиться от такого эффекта, будет ли возможным изменить ширину колонки, или нужно ещё код писать. Спасибо.
Автор: andrewtishkin
Дата сообщения: 02.11.2010 00:52
SXP

Цитата:
или нужно ещё код писать

http://forum.sources.ru/index.php?showtopic=139231&st=0&#entry1081025
Автор: GRom V
Дата сообщения: 03.11.2010 14:21
Подскажите ПЛИЗЗ!
Есть такая тема - эмуляция нажатия ALT+TAB:
Проблема в следующем... Как сделать чтоб клавиша ALT осталась нажатой?
Заранее спасибо!

procedure SendAltTab;
var
KeyInputs: array of TInput;
KeyInputCount: Integer;

procedure KeybdInput(VKey: Byte; Flags: DWORD);
begin
Inc(KeyInputCount);
SetLength(KeyInputs, KeyInputCount);
KeyInputs[KeyInputCount - 1].Itype := INPUT_KEYBOARD;
with KeyInputs[KeyInputCount - 1].ki do
begin
wVk := VKey;
wScan := MapVirtualKey(wVk, 0);
dwFlags := KEYEVENTF_EXTENDEDKEY;
dwFlags := Flags or dwFlags;
time := 0;
dwExtraInfo := 0;
end;
end;
begin
KeybdInput(VK_MENU, 0); // Alt
KeybdInput(VK_TAB, 0); // Tab
KeybdInput(VK_TAB, KEYEVENTF_KEYUP); // Tab
KeybdInput(VK_MENU, KEYEVENTF_KEYUP); // Alt
SendInput(KeyInputCount, KeyInputs[0], SizeOf(KeyInputs[0]));
end;
Автор: MikeZ
Дата сообщения: 03.11.2010 19:07
Закомментировать 3-ю строчку снизу:
KeybdInput(VK_MENU, KEYEVENTF_KEYUP); // Alt


или же между SendInput (2-я строчка снизу) и последним End'ом вставить нажатие:
KeybdInput(VK_MENU, 0); // Alt
Автор: greenpc
Дата сообщения: 03.11.2010 19:29
GRom V
а зачем тогда отпускам клавишу?

Код: KeybdInput(VK_MENU, KEYEVENTF_KEYUP); // Alt
Автор: GRom V
Дата сообщения: 04.11.2010 03:53
MikeZ
greenpc
Огромное спасибо! Действительно все просто...

Добавлено:
А можно как нить сделать чтоб клавиша alt отлипала после первого нажатия мышкой?

И можно ли заблокировать кнопку Windows на клаве?
Автор: Frodo_Torbins
Дата сообщения: 04.11.2010 11:45
GRom V
Можно, с помощью ловушек: http://www.delphimaster.ru/articles/hooks/index.html
Автор: MikeZ
Дата сообщения: 04.11.2010 15:58
GRom V
Попробуй, например, TrasWinGod - компонент-перехватчик мыши, клавиатуры и сист. событий. Некоторые антивирусы принимают способность перехватывать события за угрозу, но это просто реализация ловушек, теорию которых дал Frodo_Torbins.
Автор: Sarge1978
Дата сообщения: 05.11.2010 11:20
Всем привет!
Можно ли как-то узнать версию Delphi, с помощью которой была собрана программа?
Автор: Frodo_Torbins
Дата сообщения: 05.11.2010 12:15
Sarge1978
Можно, но не на 100% точно. Обычно применяют тот же принцип, что и в антивирусах - ищут сигнатуры присущие только данной конкретной версии делфи. Пример такой проги: http://exeinfo.fortunecity.com/
Автор: Sarge1978
Дата сообщения: 05.11.2010 15:04
Frodo_Torbins
Спасибо, за ответ. Дальше сам.
Автор: GRom V
Дата сообщения: 06.11.2010 16:47
Кто нить знает как можно заблокировать кнопку "Пуск" в виндовс 7?

Автор: Frodo_Torbins
Дата сообщения: 06.11.2010 18:16
GRom V
Как именно заблокировать? Скрыть совсем, подменить своей, сделать чтобы не нажималась? И для чего вообще это нужно?
Автор: GRom V
Дата сообщения: 07.11.2010 03:23
Frodo_Torbins

Цитата:
Как именно заблокировать? Скрыть совсем, подменить своей, сделать чтобы не нажималась? И для чего вообще это нужно?


Смысл - чтоб не работала. На комп будет установлена специалезированная программа, и не чего кроме нее возможности запустить быть не должно. Все получилось кроме меню пуск - в семерочке примеры которые нашел не работают...
Автор: Bonivur
Дата сообщения: 07.11.2010 10:12
GRom V
А кто мешает воткнуть флэшку с FAR или Total Commander и запустить всё что надо? Или же создать текстовый документ со строчкой вызова программы (например, C:\Windows\Notepad.exe) и поменять расширение на .bat ?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

Предыдущая тема: MPO File


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.