Вопрос № 22931: Здравствуйте уважаемые эксперты.
Есть dbf таблицы созданные в foxpro под дос. Так когда открываешь эти таблицы в делфи через ado русский тескт читается не во всех полях. Т.е. в поле 1 в записи один если он читается то в том же поле, но в зап...Вопрос № 22932: Здравствуйте уважаемые эксперты.
Как используя keybd_event послать нажатие управляющих клавиш(Вверх, вниз, Page Up и т.д.)
Спасибо....Вопрос № 22936: Уважаемые эксперты!
Как копироват файл:
Нажав на один объект ShellListView1 и нажав на папку в ShellListView2?
Не могли бы вы дать прямо с исходником.
Спасибо за ответы....Вопрос № 22942: Здравствуйте.
1.Как можно послать окну нажатие клавиш Alt+shift (изменить язык ввода)?
2.Как эмулировать нажатие клавиш с шифтом?
Спасибо....Вопрос № 22944: Здравствуйте эксперты, посоветуйте пожалуйста компонент для работы с COM портом!...Вопрос № 22945: Мне нужно в програму брать изображения Пример:
В папке Game находится папка Images и в ней нужно взять 1.bmp.
Как сделать так,чтобы независимо от директории,где находится Game можно было бы
брать изображение?
на Visual basic это вот ...
Вопрос № 22.931
Здравствуйте уважаемые эксперты.
Есть dbf таблицы созданные в foxpro под дос. Так когда открываешь эти таблицы в делфи через ado русский тескт читается не во всех полях. Т.е. в поле 1 в записи один если он читается то в том же поле, но в записи два вместо русских букв крякозябры. Пробывал настройки windows менять(шрифты, кодировки) ничего не помогло. Вопрос: как можно решить данную проблему, как переконвертировать таблицу из одной кодировки в другую. Если можно то поделитесь куском кода.
Отправлен: 01.07.2005, 12:59
Вопрос задал: Crick (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: Gin
Здравствуйте, Crick!
Вариантов много. Один из них - смотрите приложение.
С Уважением, Gin.
Приложение:
Ответ отправил: Gin (статус: Студент)
Отправлен: 01.07.2005, 13:52
Отвечает: Jadd
Здравствуйте, Crick!
Помнится я решал как-то такую задачу. Я ее решил заменой фонта, поддерживающего дос кодировку (по-моему, Termial) в БДЕ. Как сделать для ADO мимо БДЕ не знаю. Могу только предложить воспользоваться функциями OemToAnsi из WinAPI и перекодировать все текстовые поля таблицы. Впринципе, если не получится, пиши на xlcoder@mail.ru подумаю еще.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 01.07.2005, 15:28
Отвечает: Витомский Вадим Викторович
Здравствуйте, Crick!
Можно попробовать API-функцию OEMToAnsi(PChar(s),PChar(s)) для перекодировки одной строки. Для перекодировки БД в цикле пройтись по всем записям.
Здравствуйте уважаемые эксперты.
Как используя keybd_event послать нажатие управляющих клавиш(Вверх, вниз, Page Up и т.д.)
Спасибо.
Отправлен: 01.07.2005, 13:14
Вопрос задал: Ivaan (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: Gin
Здравствуйте, Ivaan!
Вверх, вниз, Page Up и т.д.:
vk_Up = Вверх or Page Up;
vk_Down = Вниз;
vk_Left = и т.д.;
vk_Right = и т.д.;
Простейший пример:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_UP then ShowMessage('Теперь клавиша "VK_UP"');
if Key=VK_Down then ShowMessage('Теперь клавиша "VK_Down"');
if Key=VK_Left then ShowMessage('Теперь клавиша "VK_Left"');
if Key=VK_Right then ShowMessage('Теперь клавиша "VK_Right"');
if Key=VK_End then Close;
end;
Вариант применения (для текста и клавиш) в приложении.
С Уважением, Gin.
Приложение:
Ответ отправил: Gin (статус: Студент)
Отправлен: 01.07.2005, 14:38 Оценка за ответ: 5
Отвечает: Ерёмин Андрей
Здравствуйте ещё раз, Ivaan!
Я же Вам написал:
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
Первая строка посылает сообщение всей системе, будто на клавиатуре нажата клавиша. Вторая строка посылает
сообщение, что нажатая клавиша отпущена. Старайтесь не забывать эту строку. Конечно, должно и так работать, но
когда-нибудь, где-нибудь, это может вызвать ошибку или заглючить. Вместо VK_RETURN подставляйте любую нужну.
клавишу (VK_UP,VK_DOWN,
Чтобы узнать код нужной клавиши, откройте файл справки:
Пуск - Программы - Borland Delphi - Help - MS SDK Help Files - Win32s Programmer's Reference.
В строке поиска введите "Virtual-Key Codes". В этом разделе находится большая таблица обозначений клавиш. Кроме
значения VK_##### можно указывать код символа. Например, $43 - клавиша "C". Вот пример, как "нажать на
клавиатуре" (виртуально) комбинацию Ctrl+C:
keybd_event(VK_CONTROL,0,0,0);
keybd_event($43,0,0,0);
keybd_event($43,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
И перед "нажатиями" не забывайте активировать нужное окно.
Удачи!
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 01.07.2005, 16:59 Оценка за ответ: 5
Отвечает: streetcat
Здравствуйте, Ivaan!
keybd_event(VK_UP, 0, 0, 0);
вместо VK_UP (клав. "Вверх") подставляй:
VK_DOWN (вниз), VK_LEFT, VK_RIGHT (влево, вправо)
VK_NEXT и VK_PRIOR (Page DOWN, Page Up)
Открывай WINAPI хелп и пиши в указатель строку "Virtual-Key Codes"
--------- WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 7-ой класс)
Отправлен: 04.07.2005, 19:03
Вопрос № 22.936
Уважаемые эксперты!
Как копироват файл:
Нажав на один объект ShellListView1 и нажав на папку в ShellListView2?
Не могли бы вы дать прямо с исходником.
Спасибо за ответы.
Отправлен: 01.07.2005, 14:58
Вопрос задал: Sassoft (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: Tsechoev Bagaudin
Здравствуйте, Sassoft!
Если нужно таким же макаром копировать папку, то вот ссылка как копировать папку:
http://delphiworld.narod.ru/base/copy_del_dirs.html
Удачи!
Приложение:
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 6-ой класс)
Отправлен: 01.07.2005, 17:23
Вопрос № 22.942
Здравствуйте.
1.Как можно послать окну нажатие клавиш Alt+shift (изменить язык ввода)?
2.Как эмулировать нажатие клавиш с шифтом?
Спасибо.
Отправлен: 01.07.2005, 15:30
Вопрос задал: Ivaan (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: Ерёмин Андрей
Здравствуйте третий раз, Ivaan! :)
Помогаю Вам в третий раз по тому же вопросу. Итак:
1. Пояснение: VK_MENU - обозначение [Alt].
keybd_event(VK_MENU,0,0,0);
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
2. Сначала зажимаем [Shift], потом нажимаем нужную клавишу и отпускает [Shift.]
keybd_event(VK_SHIFT,0,0,0);
keybd_event($58,0,0,0);
keybd_event($58,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
Будет нажато [Shift]+[X].
Ещё раз удачи!
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 01.07.2005, 16:59 Оценка за ответ: 5
Отвечает: Tsechoev Bagaudin
Здравствуйте, Ivaan!
Если ты хочешь менять раскладку клавиатуры это делается просто
1. Вешаешь на какие нибудь события
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
// Английская раскладка
LoadKeyboardLayout(StrCopy(Layout,'00000419'),KLF_ACTIVATE);
// Русская
LoadKeyboardLayout(StrCopy(Layout,'00000409'),KLF_ACTIVATE);
end;
2. Вот ссылка по второму вопросу http://timhome.hut.ru/delphi/myFAQ_Delphi01.htm#83
Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 6-ой класс)
Отправлен: 01.07.2005, 17:52
Отвечает: Gin
Здравствуйте, Ivaan!
1. В следующий раз задавайте вопрос конкретней - правый/левый Shift/Alt, для активного/неактивного окна и т.д..
2. Пример ЭМУЛЯЦИИ в приложении.
С Уважением, Gin.
Приложение:
Ответ отправил: Gin (статус: Студент)
Отправлен: 01.07.2005, 18:25
Вопрос № 22.944
Здравствуйте эксперты, посоветуйте пожалуйста компонент для работы с COM портом!
Отправлен: 01.07.2005, 15:51
Вопрос задал: -[tr1pl3x]- (статус: 1-ый класс)
Всего ответов отправлено: 4
Отвечает: Voituk Alexander
Здравствуйте, -[tr1pl3x]-!
Я пользую библиотеку ComPort Library находится http://comport.sf.net/
Бесплатная и работает отлично.
Ответ отправил: Voituk Alexander (статус: 9-ый класс)
Отправлен: 01.07.2005, 16:24
Отвечает: Ерёмин Андрей
Здравствуйте, -[tr1pl3x]-!
Компонент не могу посоветовать, зато подскажу неплохой модуль:
http://www.delphi.int.ru/download.php?id=26.
Содержит функции и процедуры для получения и отправки данных через COM-порт.
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 01.07.2005, 16:59
Отвечает: Tsechoev Bagaudin
Здравствуйте, -[tr1pl3x]-!
Вышли письмо с темой на адрес admin@ingush.com, вышлю компоненты.
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 6-ой класс)
Отправлен: 01.07.2005, 17:53
Отвечает: Malish
Здравствуйте, -[tr1pl3x]-!
Встречал какой-то компанент, он мне не понравился. Лучше напрямую работать с COM портом через CreateFile. Это точно!!!
Ответ отправил: Malish (статус: Студент)
Отправлен: 02.07.2005, 01:58
Вопрос № 22.945
Мне нужно в програму брать изображения Пример:
В папке Game находится папка Images и в ней нужно взять 1.bmp.
Как сделать так,чтобы независимо от директории,где находится Game можно было бы
брать изображение?
на Visual basic это вот так:=PicturePath = App.Path + "\images\1.jpg"
Где App.path-директория,где находится программа
А как будет на Delphi?
Отправлен: 01.07.2005, 15:55
Вопрос задал: Sassoft (статус: Посетитель)
Всего ответов отправлено: 11
Отвечает: Rusland
Здравствуйте, Sassoft!
ExtractFilePath(Application.ExeName);
или
GetCurrnetDir();
Ответ отправил: Rusland (статус: 6-ой класс)
Отправлен: 01.07.2005, 16:00
Отвечает: John Freeman
Здравствуйте, Sassoft!
Как-то ты странно это делаешь...
По соглашениям OS есть просто относительные пути:
image:='images1.jpg';
--------- You're trying to take me They trying to make me This is the only Gives me the only thing Tired of lying, I'm tired of lying The only thing I inderstand is what I feel...
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 01.07.2005, 16:07
Отвечает: Voituk Alexander
Здравствуйте, Sassoft!
А на Дельфине точно так же. Только путь, где находится твой исполняемый файл будет так
ExtractFilePath(Application.ExeName) + 'image1.jpg';
Ответ отправил: Voituk Alexander (статус: 9-ый класс)
Отправлен: 01.07.2005, 16:28
Отвечает: Ерёмин Андрей
Здравствуйте, Sassoft!
Да практически точно также:
PicturePath := ExtractFilePath(Application.ExeName) + 'images1.bmp';
Application.ExeName содержит полный путь к exe-файлу программы,
ExtractFilePath возвращает каталог, в котором находится указанный файл.
Удачи!
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 01.07.2005, 16:59
Отвечает: Jadd
Здравствуйте, Sassoft!
Да точно так же. За тем исключением, что в дельфях есть класс Application, а в нем свойство ExeName, которое содержит полный путь к приложению, включая имя экзешника. Стало быть твой кусок кода будет выглядеть так:
Удачи.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 01.07.2005, 18:55
Отвечает: Delphin
Здравствуйте, Sassoft!
Смотри приложение как будет.
Приложение:
--------- Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 7-ой класс)
Отправлен: 01.07.2005, 20:00
Отвечает: -[tr1pl3x]-
Здравствуйте, Sassoft! Даю самый простой, а главное рабочий пример. Независиммо в какой директории находится прога, всё будет работать.
Приложение:
Ответ отправил: -[tr1pl3x]- (статус: 1-ый класс)
Отправлен: 01.07.2005, 21:19
Отвечает: Malish
Здравствуйте, Sassoft!
Вставь такую функцию:
function GetExePath:string;
begin
Result:=ExtractFilePath(paramstr(0));
end;
Она вернет тебе строку с указанием пути по которому лежит программа, а потом просто добавишь ExePathstring+'images1.jpg'.
Ответ отправил: Malish (статус: Студент)
Отправлен: 02.07.2005, 02:02
Отвечает: Витомский Вадим Викторович
Здравствуйте, Sassoft!
Аналогично и на DELPHI:
PicturePath := ExtractFilePath(Application.EXEName)+'images1.jpg';