BUTTON-и ;)

30 отговора 0 прегледа
#1

BUTTON-и ;)

VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT
С клавишите на горе на долу и на ляво и дясно искам като ги натискам да се натиска и бутона button.click Пробвах няколко начина и нищо не стана.

procedure TForm1.Form4KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = VK_LEFT then
begin
end;
end;


procedure TForm1.KeyPress(Sender: TObject; var Key: Char);
begin
if key = #26 then
begin
// key := #0;
BEEP;
end;
end;

Как да го направя и къде ми е грешката?

М дааа...
Отговор
в отговор на Timo #2

Ако опишеш по-членоразделно проблема,ще ти помогна

Ако опишеш по-членоразделно проблема, ще ти помогна.
Просто не разбирам какво искаш и трябва да гадая:
Дали искаш като натиснеш стрелка да излиза буквичка ли?
Или да се изпълнява KeyPress?
button.click не е бутон, а е обработчик на събитие.

Вероятно ако си формулираш вярно въпроса - сам ще си отговориш.

Отговор
в отговор на Timo #3

Form.KeyPreview

Я сетни KeyPreview пропъртито на формата на True и опитай пак.

Linux isn't free, it's worthless.


Отговор
в отговор на andrew_nikoloff #4

Re: Form.KeyPreview

Направих го KeyPreview на True но не се получи.

Имам 4 бр. BitBtn и искам като натисна стрелките на клавиатурата да се натискат съответно бутоните.

М дааа...
Отговор
в отговор на Timo #5

Re: Form.KeyPreview

Ами викай им метода клик с параметър нул

Отговор
в отговор на NikB #6

Re: Form.KeyPreview

чакай, чакай. Лошо съм обяснил! Искам параметъра който да показва натискането на бутона (да хлътва бутона) при натискане на стрелката! Другото съм го направил!

М дааа...
Отговор
в отговор на Timo #7

Re: Form.KeyPreview

И за колко време да хлътва? :)


Бутоните tButton нямат такава екстра, вероятно може да се докара с прерисуване, но ми се струва, че другите алтернативи са по-четливи:
- Tool лента (Toolbar май се казваше) - има тулбутон, който е доста кадърен
- bitmap бутон и да му сменяш битмапа
- panel и да му сменяш борда от изпъкнал на вдлъбнат
Всеки от вариантите има предимства и недостатъци.

Отговор
в отговор на NikB #8

Re: Form.KeyPreview

Ахъ
Кофти, може и да го избегна или да му сложа img

М дааа...
Отговор
в отговор на Timo #9

Re: Form.KeyPreview

Да, най-лесно ще е някъде ОКОЛО или ВЪРХУ бутона да извеждаш една (зелена) точка, примерно. TImage, да речем.

Отговор
в отговор на NikB #10

Re: Form.KeyPreview

Да, то това си е глезотийка де.
Имам една ИП камера и се ебавам с нея от няма на къде. Оригиналният и софт ме дразни.

М дааа...
Отговор
в отговор на Timo #11

Re: Form.KeyPreview

Пробва ли със събитията: OnKeyPress, OnKeyUp, OnKeyDown. Мисля, че това е, което търсиш.

Отговор
в отговор на novak11 #12

Re: Form.KeyPreview

Те си работят.
Проблема не ми е толкова че копчето не хлътва в момента, а протокола. Имам протокола(намерих го за html) но искам да намеря SMNP протокол за камерата.
Снифера ми не бачка на Win7 и не мога да си намеря друг работещ.

М дааа...
Отговор
в отговор на Timo #13

Re: Form.KeyPreview

WireShark работи и на 7-ца.

Който не знае закона на Ома да си ходи у дома!
Отговор
в отговор на 2N3O55 #14

Re: Form.KeyPreview

WireShark, това за какво е?
Искам без компонент примерно 2 буитона като натисна единият да се вижда натискането на другият! Проблема не е решен но си спомням че веднъж пак ми трябваше.

М дааа...
Отговор
в отговор на Timo #15

Re: Form.KeyPreview

Аз бих ползвал TPanel.


Отговор
в отговор на Timo #16

Re: Form.KeyPreview

Снифера ми не бачка на Win7 и не мога да си намеря друг работещ.

WireShark е снифер за мрежа - ако ще подслушваш SNMP на камерата....

Който не знае закона на Ома да си ходи у дома!
Отговор
в отговор на 2N3O55 #17

Re: Form.KeyPreview

Дръпнах го, ще го разгледам. Да но ми свърши работа.

М дааа...
Отговор
в отговор на Naki #18

Re: Form.KeyPreview

За TPanel е ясно ама за Button никак.

М дааа...
Отговор
в отговор на Timo #19

Re: BUTTON-и ;)

Дали правилно съм разбрал? Бутони които да реагират на натискане на клавиатурата( например на стрелките). Ако е така :

1. Слагаш във формата 4 бр. TSpeedButton. Защо такива? Защото си имат свойство "Down" т.е можеш да гу задържиш "натиснати".
2. Настройваш свойството "GroupIndex" = 1 на всичките. Така ги вкарваш в една група от която само един може да бъде "натиснат" в един момент.
3. Настройваш свойството "AllowAllUp=true" - т.е разрешаваш да няма нито един натиснат бутон в групата.
Толкоз за бутоните. Ето и кода на формата :

{*---------------------------------------------------------------------*}
object MainForm: TMainForm
Left = 0
Top = 0
Caption = 'Buttons'
ClientHeight = 267
ClientWidth = 367
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnKeyDown = FormKeyDown
OnKeyUp = FormKeyUp
PixelsPerInch = 96
TextHeight = 13
object sbUp: TSpeedButton
Left = 144
Top = 52
Width = 65
Height = 22
AllowAllUp = True
GroupIndex = 1
Caption = 'Up'
end
object sbRigth: TSpeedButton
Left = 197
Top = 80
Width = 52
Height = 22
AllowAllUp = True
GroupIndex = 1
Caption = 'Right'
end
object sbLeft: TSpeedButton
Left = 104
Top = 80
Width = 58
Height = 22
AllowAllUp = True
GroupIndex = 1
Caption = 'Left'
end
object sbDown: TSpeedButton
Left = 144
Top = 108
Width = 73
Height = 22
AllowAllUp = True
GroupIndex = 1
Caption = 'Down'
end
end

{*--------------------------------------------------------*}


После в събитията "FormKeyDown", "FormKeyUp" пишеш :

{*--------------------------------------------------------*}
procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_DOWN : sbDown.Down := true;
VK_LEFT : sbLeft.Down := true;
VK_RIGHT : sbRigth.Down := true;
VK_UP : sbUp.Down := true;
end;
end;

procedure TMainForm.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case Key of
VK_DOWN : sbDown.Down := false;
VK_LEFT : sbleft.Down := false;
VK_RIGHT : sbRigth.Down := false;
VK_UP : sbUp.Down := false;
end;
{*--------------------------------------------------------*}


и това е. Можеш да си правиш вариации на темата.
Дано да е това което ти трябва.

По склона на връх Фудзи бавно пълзи охлюв.

Редактирано от ValM на

Отговор
в отговор на ValM #20

Re: BUTTON-и ;)

Защо не ми се получава?

procedure TForm1.sbUpClick(Sender: TObject);
begin
sbDown.Down := False;
sbUp.Down := True;
beep;
end;

procedure TForm1.sbDownClick(Sender: TObject);
begin
sbDown.Down := True;
sbUp.Down := False;
beep;
end;

М дааа...
Отговор