Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];

Вниз

Нажатие Bitbtn с клавиатуры   Найти похожие ветки 

 
Андрей_1 ©   (2008-09-17 13:32) [0]

В проге есть кнопки Bitbtn. Надо чтобы была возможность нажатия их с клавиатура клавишами 1,2,3,4,5......9. Подскажите пожалуйста!!!


 
{RASkov} ©   (2008-09-17 13:34) [1]

> [0] Андрей_1 ©   (17.09.08 13:32)

У них есть метод Click;
У формы есть свойство KeyPrewiev и методы OnKeyXxxx


 
brother ©   (2008-09-17 13:35) [2]

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if key="1" then Bitbtn1.click;
 if key="2" then Bitbtn2.click;
....
end;


 
Андрей_1 ©   (2008-09-17 14:55) [3]

Прописал вот так, но не работает

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key="1" then Bitbtn1.Click;
if key="2" then Bitbtn3.Click;
if key="3" then Bitbtn4.Click;
if key="4" then Bitbtn5.Click;
if key="5" then Bitbtn8.Click;
if key="6" then Bitbtn9.Click;
end;

и вот так не работает:

procedure TForm1.FormClick(Sender: TObject;var Key: Char);

begin
if key="1" then Bitbtn1.Click;
if key="2" then Bitbtn3.Click;
if key="3" then Bitbtn4.Click;
if key="4" then Bitbtn5.Click;
if key="5" then Bitbtn8.Click;
if key="6" then Bitbtn9.Click;
end;


 
Dennis I. Komarov ©   (2008-09-17 14:59) [4]


> procedure TForm1.FormClick(Sender: TObject;var Key: Char);

Вот это вообще шедвр!!!

Наверное кнопки не в том порядке на форму бросил... :)


 
antonn ©   (2008-09-17 15:02) [5]


> Dennis I. Komarov ©   (17.09.08 14:59) [4]
>
>
> Вот это вообще шедвр!!!

как подсказали, так и сделал :)


 
{RASkov} ©   (2008-09-17 15:05) [6]

> [3] Андрей_1 ©   (17.09.08 14:55)
> Прописал вот так, но не работает

Пропиши вот так:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 ShowMessage(key);
{  case Key of
  : ;
 end;}
end;

Не забудь про KeyPrewiev далее понажимай нужные кнопки и посмотри что будет показываться.... немного подумай, заполни case и все будет пучком.


 
{RASkov} ©   (2008-09-17 15:08) [7]

> понажимай нужные кнопки

ессно на клавиатуре :) О, боже...)


 
Dennis I. Komarov ©   (2008-09-17 15:18) [8]


> немного подумай

вот это тоже ;)


 
{RASkov} ©   (2008-09-17 15:18) [9]

> [3] Андрей_1 ©   (17.09.08 14:55)
> Прописал вот так

Медицинский заканчивал? Терапевт, млин...
:о)


 
clickmaker ©   (2008-09-17 15:23) [10]

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var Btn: TBitBtn;
begin
 Btn := FindComponent("Bitbtn" + IntToStr(Ord(Key) - 48));
 if (Btn <> nil) then
   Btn.Click;
end;


 
{RASkov} ©   (2008-09-17 15:25) [11]

> [10] clickmaker ©   (17.09.08 15:23)

Круто :)
Только можнож и так:
Btn := FindComponent("Bitbtn" + IntToStr(Key));
Только Bitbtn0 тоже должен быть :)


 
{RASkov} ©   (2008-09-17 15:26) [12]

> Btn := FindComponent("Bitbtn" + IntToStr(Key));

Тьфу... Вот:
Btn := FindComponent("Bitbtn" + Key);
:)


 
Германн ©   (2008-09-17 15:29) [13]


> FindComponent("Bitbtn" + IntToStr(Ord(Key) - 48));

Bitbtn#0 - это круто :)


 
Германн ©   (2008-09-17 15:30) [14]


> Германн ©   (17.09.08 15:29) [13]

Не проснулся :(


 
Андрей_1 ©   (2008-09-17 15:49) [15]

сделал:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var Btn: TBitBtn;
begin
Btn := FindComponent("Bitbtn" + IntToStr(Ord(Key) - 48));
if (Btn <> nil) then
  Btn.Click;
end;

Выдаёт:

[Error] Unit1.pas(586): Incompatible types: "TBitBtn" and "TComponent"

Сделал:

Btn := FindComponent("Bitbtn" + IntToStr(Key));

Выдаёт:
[Error] Unit1.pas(589): There is no overloaded version of "IntToStr" that can be called with these arguments


 
Германн ©   (2008-09-17 15:55) [16]


> Выдаёт:
>
> [Error] Unit1.pas(586): Incompatible types: "TBitBtn" and
> "TComponent"
>
> Сделал:
>
> Btn := FindComponent("Bitbtn" + IntToStr(Key));
>
> Выдаёт:
> [Error] Unit1.pas(589): There is no overloaded version of
> "IntToStr" that can be called with these arguments
>

Стрельба наугад из за угла?


 
Anatoly Podgoretsky ©   (2008-09-17 15:55) [17]

> clickmaker  (17.09.2008 15:23:10)  [10]

IntToStr(Ord("1") - 48)) = "1"


 
Андрей_1 ©   (2008-09-17 15:56) [18]

Btn := FindComponent("Bitbtn" + Key);

Ошибка: [Error] Unit1.pas(589): Incompatible types: "TBitBtn" and "TComponent"


 
{RASkov} ©   (2008-09-17 15:59) [19]

> [18] Андрей_1 ©   (17.09.08 15:56)

Используй приведение.... Не, то то которое с моторчиком :)


 
Плохиш ©   (2008-09-17 16:01) [20]


> Андрей_1 ©   (17.09.08 15:56) [18]

Значит не судьба.


 
{RASkov} ©   (2008-09-17 16:02) [21]

> Не, то то которое с моторчиком :)

:)
Наоборот)
Не, не то....


 
Правильный$Вася   (2008-09-17 16:06) [22]


> Стрельба наугад из за угла?

ты что, это научный метод
ТриП называется: пол-потолок-палец


 
Anatoly Podgoretsky ©   (2008-09-17 16:09) [23]

> Андрей_1  (17.09.2008 15:56:18)  [18]

Так и есть.


 
Vlad Oshin ©   (2008-09-17 16:13) [24]

:)
а я злой


> Btn := FindComponent("Bitbtn" + Key);
>
> Ошибка: [Error] Unit1.pas(589): Incompatible types: "TBitBtn"
> and "TComponent"

Btn := TBitBtn(FindComponent("Bitbtn" + Key));

или
if (FindComponent("Bitbtn" + Key) is tBitBtn)
then Btn := tBitBtn(FindComponent("Bitbtn" + Key) );

или
if (FindComponent("Bitbtn" + Key) is tBitBtn)
then Btn := (FindComponent("Bitbtn" + Key) as tBitBtn);


 
Андрей_1 ©   (2008-09-17 16:29) [25]

Тут ошибок не появляется, но

if (FindComponent("Bitbtn" + Key) is tBitBtn)
then Btn := tBitBtn(FindComponent("Bitbtn" + Key) );
  Btn.Click;

нет события нажатия на соответствующую BitBtn


 
clickmaker ©   (2008-09-17 16:32) [26]

var Comp: TComponent;

Comp := FindComponent("Bitbtn" + Key);
if (Comp is TBitBtn) then
 TBitBtn(Comp).Click;


 
Vlad Oshin ©   (2008-09-17 16:57) [27]

кстати,  хотел спросить в чем разница
T1(T2).prop:=
и
(T2 as T1).prop:=
почти спросил, но потом полез в CPU, понял. Не стирать же :)

 tb=class(tButton)
 private
   q:string;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  b:tb;

procedure SetCaption1(var B:tObject);
begin
 if (B is tButton)
  then tButton(B).Caption:="111";
{
Unit1.pas.36: then tButton(B).Caption:="111";
00458074 8B03             mov eax,[ebx]
00458076 BA8C804500       mov edx,$0045808c
0045807B E8F41BFEFF       call TControl.SetText
}
end;

procedure SetCaption2(var B:tObject);
begin
 if (B is tButton)
  then (B as tButton).Caption:="222";
{
Unit1.pas.48: then (B as tButton).Caption:="222";
004580A4 8B03             mov eax,[ebx]
004580A6 8B15F07F4200     mov edx,[$00427ff0]
004580AC E85BB9FAFF       call @AsClass
004580B1 BAC8804500       mov edx,$004580c8
004580B6 E8B91BFEFF       call TControl.SetText
}
end;

begin
  b:=tb.Create(form1);
  b.Parent:=form1;
  b.Left:=1;
  b.Top:=1;
  b.Visible:=true;

  SetCaption1(tObject(b));
     ShowMessage("");
  SetCaption2(tObject(b));
end;

------------------------------------------------------------
 tb=class(tButton)
 private
   q:string;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  b:tb;

procedure SetCaption1(var B:tObject);
begin
 if (B is tButton)
  then tLabel(B).Caption:="111";
//ок! для все что имеет Caption
end;

procedure SetCaption2(var B:tObject);
begin
 if (B is tButton)
  then (B as tLabel).Caption:="222"; //invalid
end;

begin
  b:=tb.Create(form1);
  b.Parent:=form1;
  b.Left:=1;
  b.Top:=1;
  b.Visible:=true;

  SetCaption1(tObject(b));
     ShowMessage("");
  SetCaption2(tObject(b));
end;

----------


 
Андрей_1 ©   (2008-09-18 07:24) [28]

Написал так:

if (FindComponent("Bitbtn" + Key) is tBitBtn)
then Btn := tBitBtn(FindComponent("Bitbtn" + Key) );
ShowMessage("Key");
Comp := FindComponent("Bitbtn" + Key);
if (Comp is TBitBtn) then
TBitBtn(Comp).Click;

Но сообщения "ShowMessage("Key")"  не по является. Видимо не определяется нажптие клавиши.


 
Dennis I. Komarov ©   (2008-09-18 09:18) [29]

А теперь раскажи где ты это чудо написал, и что оно по-твоему должно делать...


 
Vlad Oshin ©   (2008-09-18 09:40) [30]


> где ты это чудо написал

на стене, в туалете :)


> что оно по-твоему должно делать...

отвлекать от процесса, чего же еще?
-------
1. form.KeyPreview=?
2. Всю процедуру, от шапки, нельзя показать?
Может ты ее на ConstrainedResize повесил :)


 
{RASkov} ©   (2008-09-18 11:43) [31]

> [28] Андрей_1 ©   (18.09.08 07:24)

Да чтож не везуха-то какая :(


 
[i2e]   (2008-09-18 15:21) [32]

procedure TMDIChild.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var ...;
begin
 if Shift=[ssShift] then
 begin
   case Key of
   VK_UP: ...;
   VK_DOWN: ...;
   VK_LEFT: ...;
   VK_RIGHT: ...;
   end;
   Exit;
 end;
 //
 if (chr(Key)="O") then // Открыть последний файл
            begin
            MainForm.SpeedButton5.OnClick(Sender); // <--- нажатие кнопки
            end;
 //
 if (chr(Key)="R") then // Rotate - вертеть компонент связь
            begin
              MainForm.fRotateComp := True;
              FormActivate(Sender);
            end;
 case Key of
 VK_UP:     begin // стрелка вверх
            ...  
            end;

и т.д.
может поможет?
кусок точно рабочий. проверено. SpeedBtn или BitBtn - разницы нет.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.005 c
11-1194649488
Эдик
2007-11-10 02:04
2008.10.26
Модули для работы с файлами 3D Studio Max.


2-1221661922
DancerMan
2008-09-17 18:32
2008.10.26
TListView переместиться в конец списка


15-1220463031
Сергей М.
2008-09-03 21:30
2008.10.26
hMailServer


15-1220467529
Кое кто
2008-09-03 22:45
2008.10.26
Фуникулёр с гидравлическим противовесом


9-1174567977
Maximillian
2007-03-22 15:52
2008.10.26
Делаю игру, нужна помощь по скроллингу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский