Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.03.2012, 15:29
kentavr16 kentavr16 вне форума
Прохожий
 
Регистрация: 02.03.2012
Сообщения: 4
Репутация: 10
Смущение компилятор матюгается на функции

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

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Label1: TLabel;
    function AltKeyDown : Boolean;
    function ShiftKeyDown : boolean;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function AltKeyDown : boolean;
begin
Result:=(Word(GetKeyState(VK_MENU)) and $8000)<>0;
end;

function ShiftKeyDown : boolean;
begin
Result:=(Word(GetKeyState(VK_SHIFT)) and $8000)<>0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if
AltKeyDown
and
ShiftKeyDown
then
begin
  Label1.Caption:='gogogo';
end;
end;

end.
Админ: Пользуемся тагами для оформления кода!

как видите, программа должна при нажатии определенных клавиш просто вывести сообщение на лейбл. но имею ошибку "unsatisfied forward or external declaration 'TForm1.AltKeyDown'
тот же трабл с TForm1.ShiftKeyDown . насколько понял, я неверно объявил функции?
извините за пустяковую тему, но ответ реально ускорит процесс обучения делфи. заранее спс.

Последний раз редактировалось Admin, 02.03.2012 в 15:40.
Ответить с цитированием
  #2  
Старый 02.03.2012, 15:34
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Если обьявил метод в классе, то и реализация должна быть там же:
Код:
function TForm1.AltKeyDown : boolean;
 begin
 Result:=(Word(GetKeyState(VK_MENU)) and $8000)<>0;
 end;
и тд.
Ответить с цитированием
  #3  
Старый 02.03.2012, 15:40
kentavr16 kentavr16 вне форума
Прохожий
 
Регистрация: 02.03.2012
Сообщения: 4
Репутация: 10
Радость

большое спасибо. все стало ясно.)) и все же... компилятор создает проект,но при нажатии на кнопку - никакого результата.
Ответить с цитированием
  #4  
Старый 02.03.2012, 15:45
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Потому что должна быть реакция на событие, недостаточно просто написать "авось я нажму на такую-то клавишу" Самое простое - посмотри на событие TForm1.FormKeyDown (OnKeyDown).
Ответить с цитированием
  #5  
Старый 02.03.2012, 15:42
kentavr16 kentavr16 вне форума
Прохожий
 
Регистрация: 02.03.2012
Сообщения: 4
Репутация: 10
По умолчанию

сорри. все нормально работает. спасибо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:55.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025