Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 407
от 08.03.2006, 13:45

Администратор:Калашников О.А.
В рассылке:Подписчиков: 260, Экспертов: 64
В номере:Вопросов: 2, Ответов: 11


Вопрос № 36580: Здравствуйте эксперты. Начал изучать Delphi по книге, установил 7 версию, вроде бы старая (2002), стоит ли установить последнюю версию или для начала подойдет? Спасибо....
Вопрос № 36620: Добрый день. Есть несколько вопросов: 1.1 Можете подсказать как узнать как раскладка клавиатуры включена. 1.2 Как узнать какое сочитание клавиш меняет раскладку. 1.3 Как можно програмно поменять раскладку клавиатуры. 2.1 Как можно...

Вопрос № 36.580
Здравствуйте эксперты. Начал изучать Delphi по книге, установил 7 версию, вроде бы старая (2002), стоит ли установить последнюю версию или для начала подойдет?
Спасибо.
Отправлен: 02.03.2006, 16:35
Вопрос задал: Gava (статус: 1-ый класс)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Jadd
Здравствуйте, Gava!
Смотря что у Вас в книге написано. Если там описаны технологии из последних версий дельфей, тогда ставьте последнюю. В противном случае достаточно и 7-ки.

Успехов.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 02.03.2006, 16:38
Оценка за ответ: 4

Отвечает: Rusland
Здравствуйте, Gava!
Если книга описывает работу в 7-ой версии Дельфи, то лучше на ней и работать. Когда книга станет не нужна, тогда можно будет установить и что-то по новее. Я, например, пишу на 6-ой версии... много компонентов написано именно под эту версию.
---------
Если партия скажет есть контакт, будем есть контакт.
Ответ отправил: Rusland (статус: Специалист)
Отправлен: 02.03.2006, 16:39
Оценка за ответ: 4

Отвечает: Полховский Александр Владимирович
Здравствуйте, Gava!
Мне до сих пор хватает с головой. Лучше всего на оф. сайт зайти и посмотреть изменения, а там и решить, нужны ли они Вам.
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Студент)
Отправлен: 02.03.2006, 17:16
Оценка за ответ: 5

Отвечает: Ерёмин Андрей
Здравствуйте, Gava!
Подойдёт, ещё как! Я, например, тоже в Delphi 7 работаю. Эта версия сравнительно стабильная и в то же время функциональная. С более поздними версиями не совместимы многие компоненты и пакеты. А вообще, в книгах обычно пишут, с какой версией работает автор...
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Отправлен: 02.03.2006, 17:17
Оценка за ответ: 4

Отвечает: Ataman N. N.
Здравствуйте, Gava!
Для начала пойдет. Сам программирую в 7 версии, пока нравиться и очень.
Ответ отправил: Ataman N. N. (статус: 9-ый класс)
Отправлен: 02.03.2006, 17:19
Оценка за ответ: 3

Отвечает: Tamashev Denis M
Здравствуйте, Gava!
Ну у меня стоит Delphi 9.0
Мне очень нравица её можно поставить если ты C# хоть чуть-чуть знаешь !
Грузица она тоже неочень быстро !
Вобшем 7 тоже очень хорошая !
Но в 9.0 возможностей побольше !
Дело твоё !
Лично я с Delphi 9.0 уже неслезу 8) !
Ответ отправил: Tamashev Denis M (статус: 1-ый класс)
Отправлен: 02.03.2006, 19:39

Отвечает: Злоумышленник
Здравствуйте, Gava!
Похоже, D7 - лучшая версия. Потом была D8 - поддерживала исключительно платформу .NET, безуспешно продвигаемую Microsoft аж с 2000-го года. Из-за отсутствия поддержки Win32 Delphi8 потерпела полный крах. В 2005-м вышла D2005 - уже с поддержкой Win32 и опять таки с поддержкой никому не нужному .NET Сама D2005 сидит на .NET-движке, а так как технология .NET до сих пор не доведена до ума (и вряд ли будет доведена)+ начавшиеся проблемы с продажами Delphi + бездарный менеджмент руководства Borland, то в итоге получилась глючная вещь. Я устанавливал на компе D2005, сплошные глюки, да прожорливость ресурсов, в итоге пришлось вернуться на D7. Сейчас вышла D2006, вря ли что-то хорошее, учитывая тот факт, что Borland продаёт Delphi.
На сегодняшний день, тем не менее, D7 остаётся всё ещё лучшей средой быстрой разработки приложений. Майкрософт пока всё лажу какую-то демонстрирует, я до сих пор злой на них, что бездарно когда-то потратил 1,5 месяца на изучение Visual Basic, пока не понял, что отстой. Так что ты на правильном пути. Удачи!
---------
Почему нет встроенного языка 1С на мордовском? Было бы клёво!
Ответ отправил: Злоумышленник (статус: 4-ый класс)
Отправлен: 02.03.2006, 21:00

Отвечает: romodos
Здравствуйте, Gava!
Согласен с экспертами Андей Еремин и Злоумышленник. Работайте лучше на седьмой версии. Ничего особенного вам в последующих версиях не дадут. Вы даже потеряете. А седьмая версия - стабильная, рабочая, все к ней привыкли. Опять же, компонентов к ней куча. И с предыдущими версиями она совместима. А вот восьмая и далее - это NET, который на фиг не нужен!! Так что вам и для начала и для конца подойдет Delphi 7!
---------
The Source is Our Soul. FAQ me off!
Ответ отправил: romodos (статус: Практикант)
Отправлен: 04.03.2006, 07:25


Вопрос № 36.620
Добрый день.
Есть несколько вопросов:
1.1 Можете подсказать как узнать как раскладка клавиатуры включена.
1.2 Как узнать какое сочитание клавиш меняет раскладку.
1.3 Как можно програмно поменять раскладку клавиатуры.
2.1 Как можно узнать включен ли "CapsLock"
2.2 Как можно вкл/выкл "CapsLock"
Отправлен: 03.03.2006, 07:27
Вопрос задал: AllexZ (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Ерёмин Андрей
Здравствуйте, AllexZ!
1.3 (программное изменение раскладки клавиатуры):

procedure TForm1.Button1Click(Sender: TObject); {На русский}
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout( StrCopy(Layout,'00000419'),KLF_ACTIVATE);
end;

procedure TForm1.Button2Click(Sender: TObject); {На английский}
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout(StrCopy(Layout,'00000409'),KLF_ACTIVATE);
end;


2.1 (получение состояния Caps Lock):

function IsCapsLockOn : Boolean;
begin
Result := 0 <> (GetKeyState(VK_CAPITAL) and $01);
end;


2.2 (включение/выключение Lock'ов на клавиатуре):
Способ для 9x (на NT не работает):

var
KeyState : TKeyboardState;
begin
GetKeyboardState(KeyState);
KeyState[VK_SCROLL] := KeyState[VK_NUMLOCK] xor 1;
KeyState[VK_CAPITAL] := KeyState[VK_NUMLOCK] xor 1;
KeyState[VK_NUMLOCK] := KeyState[VK_NUMLOCK] xor 1;
SetKeyboardState (KeyState);
end;


Способ для NT (на 9x не работает):

begin
keybd_event (VK_SCROLL, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event (VK_SCROLL, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);

keybd_event (VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event (VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);

keybd_event (VK_NUMLOCK, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event (VK_NUMLOCK, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
end;


---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Отправлен: 03.03.2006, 07:54
Оценка за ответ: 5
Комментарий оценки:
Процедура LoadKeyboardLayout
находиться в какой библиотеке?

Отвечает: Лучников Юрий Владимирович
Здравствуйте, AllexZ!

1.1
char KeybName[KL_NAMELENGTH];
if (GetKeyboardLayoutName(KeybName))
{
if (strcmp(KeybName, "00000409") == 0) //Код англ. раскладки
Label1->Caption = "EN";
else if (strcmp(KeybName, "00000419") == 0) //Код русской раскладки
Label1->Caption = "RU";
else Label1->Caption = KeybName; // Код другой раскладки
} else Label1->Caption = "Error";

1.2
Анализируем реестр:
HKEY_CURRENT_USERKeyboard LayoutToggle\Hotkey
Смeнa coчeтания клaвиш пepeключения pacклaдки клaвиaтуpы и переключения между языками.
Тип: REGSZ;
Значение: (1 = левый Alt+Shift; 2 = Ctrl+Shift; 3 = отключен)

HKEY_CURRENT_USERKeyboard LayoutToggle\Layout Hotkey

1.3
ActivateKeyboardLayout(NULL, 0); //Меняет на следующую из установленных в системе раскладку.

2.1
(GetKeyState(VK_CAPITAL) & 1) //Выражение равно 1 если вкючен CAPS LOCK, иначе == 0.

2.2
Есть 2 способа:
Первый:
keybd_event(VK_CAPITAL, MapVirtualKey(VK_CAPITAL, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_CAPITAL, MapVirtualKey(VK_CAPITAL, 0), KEYEVENTF_EXTENDEDKEY |
Второй:
TKeyboardState KState;
GetKeyboardState(KState);
KState[VK_CAPITAL] = !KState[VK_CAPITAL];
SetKeyboardState(KState);
Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 03.03.2006, 09:59
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Все понятно.

Отвечает: Diman_A
Здравствуйте, AllexZ!
Узнать состояние CapsLock:
function IsCapsLockOn: Boolean;
begin
Result := 0 <> (GetKeyState(VK_CAPITAL) and $01);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if IsCapsLockOn then form1.Caption:='CapsLock включен!'
else form1.Caption:='CapsLock выключен!'
end;
Включитьвыключить CapsLock:
type
TKeyType = (ktCapsLock, ktNumLock, ktScrollLock);

procedure SetLedState(KeyCode: TKeyType; bOn: Boolean);
var
KBState: TKeyboardState;
Code: Byte;
begin
case KeyCode of
ktScrollLock: Code := VK_SCROLL;
ktCapsLock: Code := VK_CAPITAL;
ktNumLock: Code := VK_NUMLOCK;
end;
GetKeyboardState(KBState);
if (Win32Platform = VER_PLATFORM_WIN32_NT) then
begin
if Boolean(KBState[Code]) <> bOn then
begin
keybd_event(Code,
MapVirtualKey(Code, 0),
KEYEVENTF_EXTENDEDKEY,
0);

keybd_event(Code,
MapVirtualKey(Code, 0),
KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,
0);
end;
end
else
begin
KBState[Code] := Ord(bOn);
SetKeyboardState(KBState);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetLedState(ktCapsLock, True); // CapsLock on
end;
Ответ отправил: Diman_A (статус: 6-ой класс)
Отправлен: 03.03.2006, 17:04


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.17 (beta) от 06.03.2006
Яндекс Rambler's Top100

В избранное