Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кнопки

2.0K
27 октября 2002 года
JinPo
18 / / 25.10.2002
Доброго времени суток. У меня тут несколько вопросиков, если кто что подскажет буду очень признателен.
1.Как сделать чтобы в TEdit не было курсора (как в калькуляторе Windows)Я ставлю ей опцию ReadOnly но курсор все равно мигает, а мне это не нужно
2. Как сделать чтобы при нажатии на кнопки на цифровой клавиатуре(NumLock) например на цифре "1", обрабатывалось событие для определенной кнопки в форме.
Заранее благодарен.
250
27 октября 2002 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by JinPo
Доброго времени суток. У меня тут несколько вопросиков, если кто что подскажет буду очень признателен.
1.Как сделать чтобы в TEdit не было курсора (как в калькуляторе Windows)Я ставлю ей опцию ReadOnly но курсор все равно мигает, а мне это не нужно
2. Как сделать чтобы при нажатии на кнопки на цифровой клавиатуре(NumLock) например на цифре "1", обрабатывалось событие для определенной кнопки в форме.
Заранее благодарен.



1. В каолькуляторе он есть..: в виде: | ну и в едит он такойже если хочешь сменить то глянь в евентс.. Cursor или вообще загрузи любой свой..
2. Я не понял что ты хотел.. , юзай событие OnKeyDown

476
28 октября 2002 года
man2002ua
218 / / 16.10.2002
а кто тебе сказал, что в калькуляторе - TEdit :D :D

Посмотри с помощью Spy :)
или NTIce.
2.0K
29 октября 2002 года
JinPo
18 / / 25.10.2002
Что еще за Spy объясни конкретнее
:-?
476
29 октября 2002 года
man2002ua
218 / / 16.10.2002
Цитата:
Originally posted by JinPo
Что еще за Spy объясни конкретнее
:-?



Это одна из утилит MS VC++ - просмотр всех окон системы, с указанием их атрибутов и классов. Что-то вроде WinSight32, только гораздо удобнее

2.0K
30 октября 2002 года
JinPo
18 / / 25.10.2002
Ясно(что ничего не ясно:D ) наверно я как то не так вопрос задал
Попробую еще раз. Итак у меня есть форма, на яорме есть поле Edit1(в нем отбражаются цифры которые вводятся с помощью МЫШИ, то есть ты кликаешь на форме кнопку "1",и в Edit1 добовляется тоже "1", ты кликаешь мышкой "2" добавляется "2" и т.д. ) Так вот к чему это я...
У Edit1 уменя стоит свойство ReadOnly (тоже посоветовали) но курсор там все равно мигает(как его вообще убрать?). Я хочу сделать так как в калькуляторе Windows там этого курсора нет а когда нажимаешь на клавиши на цифровой клавиатуре обрабатываются события для клавиш 1,2,3,.../,*,-... :o Как сделать чтобы по нажатым на клавиатуре клавишам тоже обрабатывалось события(уф) Если кто понял подскажите Please:)
476
30 октября 2002 года
man2002ua
218 / / 16.10.2002
Цитата:
Originally posted by JinPo
Ясно(что ничего не ясно:D ) наверно я как то не так вопрос задал
Попробую еще раз. Итак у меня есть форма, на яорме есть поле Edit1(в нем отбражаются цифры которые вводятся с помощью МЫШИ, то есть ты кликаешь на форме кнопку "1",и в Edit1 добовляется тоже "1", ты кликаешь мышкой "2" добавляется "2" и т.д. ) Так вот к чему это я...
У Edit1 уменя стоит свойство ReadOnly (тоже посоветовали) но курсор там все равно мигает(как его вообще убрать?). Я хочу сделать так как в калькуляторе Windows там этого курсора нет а когда нажимаешь на клавиши на цифровой клавиатуре обрабатываются события для клавиш 1,2,3,.../,*,-... :o Как сделать чтобы по нажатым на клавиатуре клавишам тоже обрабатывалось события(уф) Если кто понял подскажите Please:)



В калькуляторе НЕ Edit... а Panel... если хочешь - дам пример на мыло (дай адрес, куда пролезет 128Kb)

2.0K
31 октября 2002 года
JinPo
18 / / 25.10.2002
Если ставить не Edit а Panel, то цифра у нее печатается вообще в средине, а не справа или слева(как у меня в Edit). Да, там нет курсора , но тогда опять вопрос о кнопках. Как их вводить с клавы (нужно ведь делать обработчики по нажатию клавиш как я понимаю, но как?)
Мой E-mail: [email]jinpo@mail.ru[/email] (для man2002ua)
2.0K
31 октября 2002 года
Tristan
27 / / 17.10.2002
Edit2->Width=0, и его не видно


#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Enter(TObject *Sender)
{Edit2->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
if(((Key<'0')||(Key>'9'))&&(Key!='.'))Key=NULL;
else Edit1->Text=Edit1->Text+Key;
}
//---------------------------------------------------------------------------
295
31 октября 2002 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by JinPo
Если ставить не Edit а Panel, то цифра у нее печатается вообще в средине, а не справа или слева(как у меня в Edit). Да, там нет курсора &#61514;, но тогда опять вопрос о кнопках. Как их вводить с клавы (нужно ведь делать обработчики по нажатию клавиш как я понимаю, но как?)
Мой E-mail: [email]jinpo@mail.ru[/email] (для man2002ua)


У компонента есть свойство - Alignment. У панели оно по умолчанию - taCenter. Поэтому и печатается в центре. Поставишь другое значение - будет справа или слева. А про кнопки тебе уже ответили.

476
31 октября 2002 года
man2002ua
218 / / 16.10.2002
Цитата:
Originally posted by Tristan
Edit2->Width=0, и его не видно


#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Enter(TObject *Sender)
{Edit2->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
if(((Key<'0')||(Key>'9'))&&(Key!='.'))Key=NULL;
else Edit1->Text=Edit1->Text+Key;
}
//---------------------------------------------------------------------------



Оригинальное решение :) JinPo - это самый простой способ для тебя - используй его, забудь про TPanel

317
01 ноября 2002 года
Relax
573 / / 20.09.2000
по-моему вместо Эдитов и панелей лучше всего юзать TStaticText...
421
01 ноября 2002 года
bercut
124 / / 20.06.2000
Цитата:
Originally posted by JinPo
Если ставить не Edit а Panel, то цифра у нее печатается вообще в средине, а не справа или слева(как у меня в Edit).



А ты поиграйся с Alignment и у тебя все будет печататься, там где ты захочешь.

2.0K
01 ноября 2002 года
JinPo
18 / / 25.10.2002
СПАСИБО ВСЕМ БОЛЬШОЕ. Но на одном форуме мне написали что есть какая то функция которая ловит нажатия клавиш на клавиатуре и смотрит их код. Т.е. нажал клавишу(когда форма в активном состоянии) она смотрит ее код и пот, сравнивая с каким то условием решае, добавить ей символ этой клавиши в Edit или нет. Помоему они там что то говорили про catch или getch, но я так и не понял(уж очень КРУТЫЕ ХАКЕРЫ чтоб что нибудь подсказать). Кстати отдельное спасибо man2002ua
2.0K
01 ноября 2002 года
JinPo
18 / / 25.10.2002
СПАСИБО ВСЕМ БОЛЬШОЕ. Но на одном форуме мне написали что есть какая то функция которая ловит нажатия клавиш на клавиатуре и смотрит их код. Т.е. нажал клавишу(когда форма в активном состоянии) она смотрит ее код и потом, сравнивая с каким то условием решает, добавить ей символ этой клавиши в Edit или нет. Помоему они там что то говорили про catch или getch, но я так и не понял(уж очень КРУТЫЕ ХАКЕРЫ, чтоб что нибудь подсказать). Может кто знает про эту функцию...
Кстати отдельное спасибо man2002ua
476
01 ноября 2002 года
man2002ua
218 / / 16.10.2002
незачто :)
Только это наверно слишком крутые хакеры, раз навешали тебе лапши - проше использовать обработчик формы OnKeyPress - она получает код символа (Enter = 0x0D, ESC = 0x1B и т.п.).
421
01 ноября 2002 года
bercut
124 / / 20.06.2000
Цитата:
Originally posted by JinPo
СПАСИБО ВСЕМ БОЛЬШОЕ. Но на одном форуме мне написали что есть какая то функция которая ловит нажатия клавиш на клавиатуре и смотрит их код. Т.е. нажал клавишу(когда форма в активном состоянии) она смотрит ее код и потом, сравнивая с каким то условием решает, добавить ей символ этой клавиши в Edit или нет. Помоему они там что то говорили про catch или getch, но я так и не понял(уж очень КРУТЫЕ ХАКЕРЫ, чтоб что нибудь подсказать). Может кто знает про эту функцию...
Кстати отдельное спасибо man2002ua



Либо воспользуйся компонентом TApplicationEvents, который находится в Adittional палитры компонентов.
void __fastcall TForm1::ApplicationEvents1ShortCut(TWMKey &Msg,
bool &Handled)
{
LabelVersion->Caption = Msg.CharCode;
}

Либо используй это Application->OnShortCut(). Думаю разберешься...

317
01 ноября 2002 года
Relax
573 / / 20.09.2000
хакеры тут ни при чем и апликешневентс юзать необязательно - у главной формы установи флаг KeyPreview в true - тогда все события нажатия клавиш будут в первую очередь попадать в обработчик формы, а затем уже в обработчик того компонента, к которому они действительно относятся. чтобы предотвратить вызов обработчика компонента нужно в обработчике формы после выполненния всех действий написать Key = 0;
2.0K
01 ноября 2002 года
JinPo
18 / / 25.10.2002
Напиши поподробнее про этот обработчик (малюсенький пример) если можешь. Кстати как я понял это коды клавиш в Hex кодировке где бы мне узнать коды для всех клавиш?:)
476
01 ноября 2002 года
man2002ua
218 / / 16.10.2002
лови :)
2.0K
02 ноября 2002 года
JinPo
18 / / 25.10.2002
Ага , ну тогда заключительный вопрос, на эту тему (т.к. калькулятор я все таки дописываю, как ни странно :D ).
У меня идет текст
__fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if ((int)Key==49)*******
}
так вот что нужно написать на месте "*******" , чтобы дальше шел переход к обработчику события для "Быстрой кнопки"

__fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
..............
}
как это сделать.

Кстати, man2002ua, спасибо за "Справочку" - очень помогла.

PS СПАСИБО ОГРОМНОЕ всем, кто давал советы и отвечал.
С уважением JinPo Кстати сейчас я начал писать простенький текстовый редактор :D
295
04 ноября 2002 года
gray_k
356 / / 20.12.1999
Ну это совсем просто:) .
SpeedButton1->Click();
2.0K
04 ноября 2002 года
JinPo
18 / / 25.10.2002
Воспользовавшись последней подсказкой написал )следующее if((int)Key==75) SpeedButton1->Click() Ничего не выходит компилиться но не работает:-?
295
04 ноября 2002 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by JinPo
Воспользовавшись последней подсказкой написал )следующее if((int)Key==75) SpeedButton1->Click() Ничего не выходит компилиться но не работает:-?


Посмотри этот проект. Он работает.

295
04 ноября 2002 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by JinPo
Воспользовавшись последней подсказкой написал )следующее if((int)Key==75) SpeedButton1->Click() Ничего не выходит компилиться но не работает:-?


Событие OnKeyPress отслеживает регистр и кодировку(русская, английская). Наверно проблемы из-за этого. Поэтому если в событии OnKeyPress хочешь отследить нажатие клавиши посмотри её кода для всех возможных раскладок клавы и регистра.

476
04 ноября 2002 года
man2002ua
218 / / 16.10.2002
Самый посещаемый вопрос ! :D

JinPo - даш потом посмотреть на твой куркулятор?
317
04 ноября 2002 года
Relax
573 / / 20.09.2000
обработчик можно вызвать и так: SpeedButton1Click(SpeedButton1);
а вместо чисел обозначающих клавиши лучше юзать константы - самому же проще будет, их можно найти в хелпе по ключевой фразе vitual key codes
476
04 ноября 2002 года
man2002ua
218 / / 16.10.2002
Цитата:
Originally posted by Relax
обработчик можно вызвать и так: SpeedButton1Click(SpeedButton1);
а вместо чисел обозначающих клавиши лучше юзать константы - самому же проще будет, их можно найти в хелпе по ключевой фразе vitual key codes



и это правильно! 8)
называйте вещи своими виртуальными именами!

295
04 ноября 2002 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by Relax
обработчик можно вызвать и так: SpeedButton1Click(SpeedButton1);
а вместо чисел обозначающих клавиши лучше юзать константы - самому же проще будет, их можно найти в хелпе по ключевой фразе vitual key codes


А можно SpeedButton1Click(NULL);
Кстати в чём разница по сравнению с SpeedButton1Click(SpeedButton1)?
Хакеры-программеры, подскажите.

476
04 ноября 2002 года
man2002ua
218 / / 16.10.2002
The Sender parameter is the object whose event handler is called. For example, with the OnClick event of a button, the Sender parameter is the button component that is clicked.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button2Click(Button1);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
//Caption = ((TButton*)Sender)->Caption;
((TControl*)Sender)->Visible = FALSE;
}
317
05 ноября 2002 года
Relax
573 / / 20.09.2000
Цитата:
Originally posted by gray_k

А можно SpeedButton1Click(NULL);
Кстати в чём разница по сравнению с SpeedButton1Click(SpeedButton1)?
Хакеры-программеры, подскажите.


разница, собственно, в значении параметра... :) - если ты его не используешь, то и значение его тебе соответственно - по барабану... а нужен он например, если есть у тебя десять кнопок, на которых весит один обработчик - вот параметр и нужен, чтобы понять от какой кнопки поступило событие...

2.0K
05 ноября 2002 года
JinPo
18 / / 25.10.2002
Товарищи! Отдал я свой калькулятор так сказать на бета тестирование :D Так вот всплыл один момент. Когда его разворачиваешь, получается некрасивость:( Выход, как мне кажется в том, чтобы сделать недоступной кнопку "развернуть" НО КАК?
295
06 ноября 2002 года
gray_k
356 / / 20.12.1999
Цитата:
Originally posted by JinPo
Товарищи! Отдал я свой калькулятор так сказать на бета тестирование :D Так вот всплыл один момент. Когда его разворачиваешь, получается некрасивость:( Выход, как мне кажется в том, чтобы сделать недоступной кнопку "развернуть" НО КАК?


У формы есть набор свойств BorderIcons. В инспекторе объектов ставишь у BorderIcons свойство biMaximize в false. Вот и всё8) . Вообще-то это написано в любой книжке для начинающих по билдеру или дельфи практически в самом начале:) .

2.0K
24 ноября 2002 года
JinPo
18 / / 25.10.2002
Доброго времени суток...
Такой вопрос: у кнопки идет такой обработчик

void __fastcall TForm1::Button16Click(TObject *Sender)
{
String lil; int dog, i, n;
lil = Pole->Caption;
dog = lil.Length();
for (i = 0;i<=dog;i++)
{
if (lil==',') n++;
}
if (n==0) Pole->Caption=Pole->Caption+',';
То есть по идее он должен некую строку просмотреть, на наличие символа и если такой символ нашелся то переменную изменить. Вроде все правильно, но что то не правильно(хе хе)
Все компилится, но когда на эту кнопку жмешь появляется сообщение:
317
25 ноября 2002 года
Relax
573 / / 20.09.2000
а в отладчике смотрел - на какой строке вылазит ошибка? скорее всего - когда идет обращение по индексу, потому что у типа String при обращении через [] тндексация идет с единицы, а не с нуля... :) а вообще есть функция Pos(), возвращающая позицию подстроки в строке - если найдет вернет индекс, если нет, то ноль...
2.0K
27 ноября 2002 года
JinPo
18 / / 25.10.2002
Когда ставлю [1] то он вообще неправильно работает. Т.е. нажимаешь кнопку и ничего не происходит... :-? Цикл то вроде правильный только почему он не работает? (Может ввсе таки неправильный :D :D) Подскажите please
317
28 ноября 2002 года
Relax
573 / / 20.09.2000
ты все-таки скажи - в отладчике проверял? поставь отчку прерывания на начале цикла, запусти прогу, когда нажмешь кнопку иди пошагово и смотри значения переменных...

ну я тут посмотрел - все вроде правильно, кроме одного - ты не инициализируешь переменную n, надо ей что-нибудь присвоить, а то там неизвестно что может лежать... и ты, соответственно, это неизвестно что инкрементируешь...

ЗЫ: если я правильно понял, ты просто хочешь определить наличие запятой в строке... тогда лучше юзай функцию Pos(); в твоем случае это будет выглядеть как:
if(!Pole->Caption.Pos(",")) Pole->Caption = Pole->Caption+',';
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог