program Lab5;
 
uses
  SysUtils, Crt;
 
type
  TMouseButton = (mbLeft, mbRight, mbMiddle);
  TShiftState = (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
 
procedure DemonstrateMouseEvents;
var
  x, y: Integer;
  button: TMouseButton;
begin
  WriteLn('=== ДЕМОНСТРАЦИЯ СОБЫТИЙ МЫШИ ===');
  WriteLn('OnMouseDown - нажатие кнопки мыши');
  WriteLn('OnMouseUp - отпускание кнопки мыши'); 
  WriteLn('OnMouseMove - перемещение мыши');
  WriteLn;
end;
 
procedure DemonstrateKeyboardEvents;
var
  key: Char;
begin
  WriteLn('=== ДЕМОНСТРАЦИЯ СОБЫТИЙ КЛАВИАТУРЫ ===');
  WriteLn('OnKeyPress - нажатие символьной клавиши');
  WriteLn('OnKeyDown - нажатие любой клавиши');
  WriteLn('OnKeyUp - отпускание любой клавиши');
  WriteLn;
end;
 
procedure DemonstrateDragDrop;
begin
  WriteLn('=== ДЕМОНСТРАЦИЯ DRAG&DROP ===');
  WriteLn('DragMode - режим перетаскивания');
  WriteLn('OnDragOver - перетаскивание над компонентом');
  WriteLn('OnDragDrop - бросок данных');
  WriteLn;
end;
 
procedure ShowStatusBarInfo;
begin
  WriteLn('=== КОМПОНЕНТ TStatusBar ===');
  WriteLn('Панель состояния с тремя секциями:');
  WriteLn('1. Дата: ', DateToStr(Date));
  WriteLn('2. Координаты мыши при нажатии');
  WriteLn('3. Текущие координаты мыши');
  WriteLn;
end;
 
procedure ShowHints;
begin
  WriteLn('=== ПОДСКАЗКИ (HINT) ===');
  WriteLn('Panel1: "Эту панель можно перемещать"');
  WriteLn('Edit1: "Введите текст здесь"');
  WriteLn('Edit2: "Перетащите сюда текст из Edit1"');
  WriteLn;
end;
 
// Демонстрация преобразования регистра
procedure DemonstrateCaseConversion;
var
  input: string;
  i: Integer;
begin
  WriteLn('=== ПРЕОБРАЗОВАНИЕ В ВЕРХНИЙ РЕГИСТР ===');
  Write('Введите текст (латинские буквы): ');
  ReadLn(input);
 
  for i := 1 to Length(input) do
  begin
    if input[i] in ['a'..'z'] then
      input[i] := Chr(Ord(input[i]) - 32);
  end;
 
  WriteLn('Результат: ', input);
  WriteLn;
end;
 
begin
  ClrScr;
  WriteLn('ЛАБОРАТОРНАЯ РАБОТА №5');
  WriteLn('Основы работы с базами данных и событиями');
  WriteLn('==========================================');
  WriteLn;
 
  DemonstrateMouseEvents;
  DemonstrateKeyboardEvents;
  DemonstrateDragDrop;
  ShowStatusBarInfo;
  ShowHints;
  DemonstrateCaseConversion;
 
  WriteLn('Нажмите Enter для выхода...');
  ReadLn;
end.