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

» Вопросы по Delphi 2

Автор: GTA3
Дата сообщения: 16.09.2006 15:16
Ramazan
Отлично!! все получилось спасибо!!!
Автор: MoonFox
Дата сообщения: 16.09.2006 15:17
Ну а если список в дизайнере уже заполнен, то можно в FormCreate использовать примерно такой код:
Код: with ComboBox1 do
for I := 0 to Items.Count - 1 do
Items.Objects[I] := TObject(I + 1);
Автор: GTA3
Дата сообщения: 16.09.2006 15:55
Ramazan

все получилось спасибо
Автор: RomanTim
Дата сообщения: 17.09.2006 19:18
xitsmex
По поводу п.2:
События OnEnter, OnExit - просто уведомительные, исключения в них операцию не откатывают (скорее всего в данном случае само WinAPI такого не предусматривает). Поэтому если тебе надо, чтобы фокус не уходил с TEdit - возвращай его обратно
Код:
if TEdit(Sender).Text = '1' then begin
TEdit(Sender).SetFocus;
raise Exception.Create('!!!');
end;
Автор: Nicka_Grey
Дата сообщения: 18.09.2006 11:00
Нужна помощь.
Портирую IDE-эксперт из Delphi7 в Delphi2006.
Так вот такой вопрос: в эксперте вызывается у меня функция GetNewModuleAndClassName, которая возвращает сгенерированное имя модуля, имя класса и имя файла модуля.
Так вот в 7-ке нормально отрабатывает, все что нужно возвращает, а в 2006-й как то не так работает. А точнее как минимум имя класса не возвращает.
Подскажите плз, что поменялось в этом плане в 2006-й. или вообще нужно по другому делать?
Автор: pit23
Дата сообщения: 18.09.2006 13:14
Вопрос. Как узнать точное расположение DBEdit'а который находится на CtrlGrid'е (т.е. свойства Left, Top) отсносительно формы на которой расположен CtrlGrid.
Автор: Ramazan
Дата сообщения: 18.09.2006 14:43
pit23
Работать с абсолютными (экранными) координатами. см ClientToScreen/ScreenToClient

Присоединяюсь к Nicka_Grey. Есть хоть какое-нибудь описание OpenTools API для BDS?
Автор: Arvur
Дата сообщения: 18.09.2006 15:34
Ramazan
Nicka_Grey
Вот эти ребята на сабже собаку съели _http://www.gexperts.org/opentools/
Автор: Ramazan
Дата сообщения: 18.09.2006 16:56
Arvur
Знаю, но интересуют особенности API именно для BDS
Автор: RostY
Дата сообщения: 18.09.2006 16:58
pit23
можно попробовать
DBEdit.left+DBEdit.Parent.left;
DBEdit.Top+DBEdit.Parent.Top;

если DBCtrlGrid лежит еще на чем-то (напр, на панели), можно рекурсивно перебирать парентов пока парент не станет TForm
Автор: STEEL
Дата сообщения: 18.09.2006 17:11
Создаю форму, при нажатии на OK из контрола HotKey получаем Shorcut - в лучшем случае, а у меня почему то Hotkey равен нулю.

Код:
procedure TfrmMain.mnuItemOptionsClick(Sender: TObject);
begin
with TfrmOptions.Create(self) do
try
ShowModal;
if ModalResult = mrOk then
begin
frmMain.btnShortcut := HotKeyShort.HotKey;
end;

finally
Free;
end;
Автор: Arvur
Дата сообщения: 18.09.2006 19:16
Ramazan
Там внизу есть баги для BDS и ссылки.
После того, как Орлик прикрыл свою страничку, это имхо лучший start-point по вопросу.
Автор: Ramazan
Дата сообщения: 18.09.2006 21:11
Arvur
Угу. В свое время исследовал внутренности D7 почти методом "тыка". Не хотелось бы повторять опыт, поэтому ищу отличия. Впрочем, это для души, реальной НЕОБХОДИМОСТИ порта эксперта нет.
Автор: dmit000
Дата сообщения: 19.09.2006 10:21
Подскажите пожалуйсто код для раскладки клавиатуры
Автор: Ramazan
Дата сообщения: 19.09.2006 10:47
dmit000
Нуу... Backspace имеет код 8, например .
Уточни вопрос, не ясно, что за код
Автор: wader
Дата сообщения: 19.09.2006 11:30
dmit000
Может кодовую страницу? Для русского языка ср1251

А вообще поддерживаю Ramazana.
Неплохо бы уточнить вопрос, что именно тебе нужно.

Телепаты пока в отпуске.
Автор: dmit000
Дата сообщения: 19.09.2006 13:10
Ramazan, wader
всё верно.
хочу из своей программы менять раскладку клавиатуры.
пример: см. языковую панель в правом нижнем уголу
прошу Вас привети код
Автор: greenpc
Дата сообщения: 19.09.2006 13:20
dmit000 лови
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout( StrCopy(Layout,'00000419'),KLF_ACTIVATE); //На русский
LoadKeyboardLayout(StrCopy(Layout,'00000409'),KLF_ACTIVATE); //На английский
end;
Автор: wader
Дата сообщения: 19.09.2006 13:21
dmit000

Код не мой, сразу предупреждаю . Нашел у себя в архиве.

Код:
function NameKeyboardLayout(layout : LongWord) : string; - Получает название раскладки из списка (для удобства сделал ))

function GetActiveKbdLayout : LongWord; - Получает раскладку в своей программе

function GetActiveKbdLayoutWnd : LongWord; - Получает раскладку в активном окне

procedure SetKbdLayout(kbLayout : LongWord); - Устанавливает раскладку в своей программе

procedure SetLayoutActiveWnd(kbLayout : LongWord); - Устанавливает раскладку в активном окне
Автор: dmit000
Дата сообщения: 19.09.2006 15:31
спасибо за ответы. буду пробовать
Автор: NewbieCnt
Дата сообщения: 19.09.2006 16:52
wader
Спасибо. Но вот непонятно там написано. Т.е. если я знаю, что строка это последовательность байтов. Это либо однобайтные (utf8), либо двубайтные (16). Тогда уже можно последовательность из буффера обмена вставлять переключив на неанглийский язык. Но если читаю xml в dom парсер, то всё равно надо бы определиться. Я думал что в WideString хватит одного символа, чтобы обозначить любую кодировку. Значит может и функция такая есть типа

Код:
if IsWideString(s) then
for i:=1 to length(WideString(s)) do ;
Автор: GTA3
Дата сообщения: 19.09.2006 20:49
procedure TForm2.Button1Click(Sender: TObject);
var
z,s: string;
begin
DateTimeToString(s,'mmdd',now);
DateTimeToString(z,'yyyymmdd',now);

memo1.Lines.Text:='TUTDF' +chr(9)+ '1.0r' +chr(9)+
'20050701' +chr(9)+ 'S401BB000001' +chr(9)+ ''+chr(9)+
'' +z+ '' +chr(9)+ 'M3b2gGta' +chr(9)+
'is a sample comment' +chr(13)+ //перевели каретку на новую строку

'ID01' +chr(9)+ '' +chr(9)+ 'serNomer' +chr(9)+
datevidanpassport.Field.Text+ '' +chr(9)+ '' +Kemvidan.Text+ '' +chr(9)+
'' +gdevidan.Field.Text+
chr(13)+ 'NA01' +chr(9)+;

end;
Не знаю даже как объяснить попробую вот так...
это часть кода по сохранению текста в определенном формате...
'ID01' +chr(9)+ '' +chr(9)+ 'serNomer' +chr(9)+
ЕСЛИ будет следующая строка то она должна быть такого вида
тоесть ID на каждой строке возрастает
'ID02' +chr(9)+ '' +chr(9)+ 'serNomer' +chr(9)+
но ее может и не быть...
помогите мне написать функцию или цикл...который будет смотреть есть ли на предыдущей строке ID+номер. Если есть будет проставлять ID+ "следующий номер"



Автор: SERGE_BLIZNUK
Дата сообщения: 19.09.2006 23:05
GTA3

Цитата:
'ID01' +chr(9)+ '' +chr(9)+ 'serNomer' +chr(9)+
ЕСЛИ будет следующая строка то она должна быть такого вида
тоесть ID на каждой строке возрастает
'ID02' +chr(9)+ '' +chr(9)+ 'serNomer' +chr(9)+


заведи глобальную переменную MyID (можешь засунуть её описание в
TForm2 = class(TForm)
....
private (или public)
MyID : Integer;

на TForm2.FormCreate
MyID := 1;

при выводе строки преобразуй в число, дополняй нулями спереди (если нужно)
и наращивай Inc(MyID)


Цитата:
но ее может и не быть...

а это как? у тебя не видно условия... впрочем - в этом случае (когда её нет - не выводишь и НЕ наращиваешь переменную)
надеюсь, что я смог донести до тебя свою мысль.

Добавлено:
а вообще, формальный ответ на твой вопрос, проверить наличие текста ID в последней строке memo можно так:

Код:
if Pos('ID',memo1.Lines[memo1.Lines.Count-1]) = 1 then
// нашли текст 'ID' в последней строчке
Автор: xitsmex
Дата сообщения: 19.09.2006 23:31
NewbieCnt
Не подойдет IsTextUnicode из WinAPI? Илия не правильно понял задачу?
Автор: dmit000
Дата сообщения: 20.09.2006 06:31
1. подскажите пожалуйсто код реализации секундомера с его отражением в метке Label
(нажал на кнопку и в метке label побежало время секундомера)

2. подскажите пожалуйсто код реализации таймера обратного отсчёта времени с его отражением в метке Label (нажал на кнопку и в метке label побежало время таймера)
Автор: RomanTim
Дата сообщения: 20.09.2006 06:57
dmit000
Заводишь у формы поле
StartTime: TDateTime

Кидаешь на форму TTimer, ставишь ему интервал такой, с каким тебе надо обновлять тект в лейбле и выключаешь (Enabled = False).

При нажатии на кнопку "Старт" включаешь таймер и запоминаешь время старта
StartTime := Now;

В событии OnTimer таймера выводишь в лейбл разницу между текущим временем и временем старта
Label1.Caption := DateTimeToStr(Now - StartTime)

Для обратного отсчета величину (Now - StartTime) отнимаешь от своего стартового значения, а когда все это станет меньше 0 - выключаешь таймер
Автор: dmit000
Дата сообщения: 20.09.2006 07:45
RomanTim

спасибо

Добавлено:
RomanTim

а как сделать чтобы в таймере отображались ещё и милисекунды, т.е. по маске
00:00:00:00
Автор: RomanTim
Дата сообщения: 20.09.2006 08:17
dmit000

Цитата:
а как сделать чтобы в таймере отображались ещё и милисекунды, т.е. по маске
00:00:00:00

FormatDateTime
Автор: RostY
Дата сообщения: 20.09.2006 08:46
отображать-то милисекунды можно, то сомневаюсь что у тебя таймер будет страбатывать через каждую милисекунду
Автор: OdesitVadim
Дата сообщения: 20.09.2006 12:16
dmit000RostY

Будет укладываться, гдето 2 раза в милисекунду. Но смысл?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Событие STFilter(DBGridEh) ???


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