• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Друзья, нужна ваша помощь

  • Автор темы Автор темы g1one
  • Дата начала Дата начала

g1one

Новые
Регистрация
11 Дек 2011
Сообщения
15
Реакции
0
Баллы
0
Друзья, нужна ваша помощь

1. На форме располагаются: редактор Memo; две панели для вывода размера редактора и две панели выше с соответствующими надписями «Ширина» и «Высота»; четыре кнопки , , , ; список ListBox с опциями "Левый верхний" и "Правый нижний" и кнопка Close. Нажатие кнопок со стрелками приводит к соответствующему изменению размера редактора вследствие перемещения указанного в ListBox угла, что отображается на панелях. Размер редактора находится в диапазоне от 100х100 до 250х250. При достижении граничного значения соответствующая кнопка исчезает. Кнопка Close заканчивает программу.
 
Данную задачу нужно сделать на Delphi
 
На событие OnClick соответствующей кнопки повесьте команду изменения линейного размера компоненты (соответственно Width и Hight) и анализируйте его значение (If ...). При достижении предельного значения соответствующую кнопку спрячьте (свойство Visible:=False).
 
А можно по подробнее, Пожалуйста)
 
Двойной щелчок по любой кнопке на форме (в режиме конструирования) открывает процедуру обработки щелчка по этой кнопке (Событие OnClick, о чем писал AlexZir). В нее-то и нужно записать действие, которое бы меняло высоту и ширину формы, или ее положение на экране.

Вы говорите, я делал похожую задачу? Дайте-ка ссылку, посмотреть. Кажется, там все неплохо расписано..
 
В общем-то, все похоже, надо лишь немного изменить процедуры перемещения.
Поясню по событиям: среди окон делфи в левом нижнем углу есть окно Инспектора объектов (Object Inspector), на одной вкладке которого отображаются Свойства выделенного объекта, на второй - события для данного объекта (Properties и Events соответственно). Так, событие Щелчок мыши обрабатывается через OnClick, нажатие клавиши - OnKeyPress, изменение - OnChange, и т.д.. В соответствующие события вам нужно вписать код, который бы обрабатывал это и производил какие-то действия.
Так вот, для обработки изменения ЛистБокса добавляем в глобальный var переменную flag логического типа, а в саму процедуру вставляем это:
Код:
сase ListBox1.ItemIndex of
 0: flag:=false;
 1: flag:=true;
 end;
 
Далее, коды для кнопок направлений из той темы справедливы и для вас, только лишь объект Form1 замените на Memo1.
 
unit Unit3;

interface

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

type
TForm3 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
ListBox1: TListBox;
CheckBox1: TCheckBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
Case flag of
false: Memo1.Left:=Form1.Left-5;
true: Memo1.Width:=Form1.Width-5;
end;
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
Case flag of
false: Memo1.Top:=Form1.Top+5;
true: Memo1.Height:=Form1.Height+5;
end;
end;

procedure TForm3.Button3Click(Sender: TObject);
begin
Case flag of
false: Memo1.Left:=Form1.Left+5;
true: Memo1.Width:=Form1.Width+5;
end;
end;

procedure TForm3.Button4Click(Sender: TObject);
begin
Case flag of
false: Memo1.Top:=Form1.Top-5;
true: Memo1.Height:=Form1.Height-5;
end;
end;

procedure TForm3.CheckBox1Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm3.ListBox1Click(Sender: TObject);
begin
var flag of
сase ListBox1.ItemIndex of
0: flag:=false;
1: flag:=true;
end;
end;

end.
Вот что я смог сделать) Ошибку выдает case flag of
 
добавляем в глобальный var переменную flag логического типа
Вы это пропустили. Подскажу, в глобальном var'e у вас уже описана Form3 (откуда там три?).

И еще: не везде заменено Form1 на мемо, внимательнее надо искать. Или пользоваться процедурой замены-подстановки.
 
Var I: Integer;
Var I: Boolean;
вот это переменная?
мемки я исправил а вот насчет вар я не понимаю..


[DCC Error] Unit3.pas(46): E2003 Undeclared identifier: 'flag'
[DCC Error] Unit3.pas(54): E2003 Undeclared identifier: 'flag'
[DCC Error] Unit3.pas(62): E2003 Undeclared identifier: 'flag'
[DCC Error] Unit3.pas(70): E2003 Undeclared identifier: 'flag'
[DCC Error] Unit3.pas(83): E2029 Statement expected but 'VAR' found
[DCC Error] Unit3.pas(83): E2029 ';' expected but 'VAR' found
[DCC Error] Unit3.pas(84): E2029 ',' or ':' expected but identifier 'ListBox1' found
[DCC Error] Unit3.pas(84): E2029 ',' or ':' expected but 'OF' found
[DCC Error] Unit3.pas(85): E2029 '..' expected but ':' found
[DCC Error] Unit3.pas(85): E2029 ',' or ':' expected but ';' found
[DCC Error] Unit3.pas(86): E2029 '..' expected but ':' found
[DCC Error] Unit3.pas(86): E2029 ',' or ':' expected but ';' found
[DCC Error] Unit3.pas(87): E2029 Type expected but 'END' found
[DCC Warning] Unit3.pas(108): W1011 Text after final 'END.' - ignored by compiler
[DCC Fatal Error] Project1.dpr(7): F2063 Could not compile used unit 'Unit3.pas'
 
Смотрим последнюю процедуру: после бегина идет строка var flag of. Она там не нужна.

Да, сейчас вы описали переменные. Теперь вам осталось вставить правильную строку в правильное место программы. Подумайте.
И у вас есть еще минимум одна ошибка. Будете тестировать - найдете.

P.S. Опишите переменную, половина ошибок отсеется.
 
пробывал я эти две переменные ставить в разные места не чего так и не происходило, он так и выдавал ошибку в варе.
 
Да зачем две-то? Одну надо. И не I, а flag.
Найдите строки
var
Form3: TForm3;

и после них добавьте булевский флаг. Все глобальные переменные описываются именно тут.

Вар из последней процедуры выкинули?
 
Воо, сделал) да, вар выкинул, теперь выдает в
procedure TForm3.ListBox1Click(Sender: TObject);
begin
сase ListBox1.ItemIndex of
0: flag:=false;
1: flag:=true;
end;
пишет что ошибка в case и of
 
case я сделал, остались вот эти
Compiling Project1.dproj (Debug configuration)
[DCC Error] Unit3.pas(89): E2070 Unknown directive: 'TForm3'
[DCC Error] Unit3.pas(94): E2070 Unknown directive: 'TForm3'
[DCC Error] Unit3.pas(99): E2070 Unknown directive: 'TForm3'
[DCC Error] Unit3.pas(104): E2070 Unknown directive: 'TForm3'
[DCC Error] Unit3.pas(27): E2065 Unsatisfied forward or external declaration: 'TForm3.Memo3Change'
[DCC Error] Unit3.pas(28): E2065 Unsatisfied forward or external declaration: 'TForm3.Memo4Change'
[DCC Error] Unit3.pas(29): E2065 Unsatisfied forward or external declaration: 'TForm3.Memo2Change'
[DCC Error] Unit3.pas(30): E2065 Unsatisfied forward or external declaration: 'TForm3.Memo1Change'
[DCC Fatal Error] Project1.dpr(7): F2063 Could not compile used unit 'Unit3.pas'
 
Хм, ListBox у вас есть.. Такая форма записи у меня компилировалась.. Попробуйте переписать эту строчку, может где-то мелочь какая-то мешает.. А что за ошибка-то?
 
Откуда у вас третья форма, и четыре мемо? Не знаю структуру вашего проекта, но лучше, наверно, создать новый проект, с одной формой. Процедуры все перекинуть туда не трудно.
 
Я на форме расположил 4memo ( memo1,memo2,memo3,memo4 ), а Form3 я сам не понимаю почему появились.
 
Может все-таки в новый проект? Щас начнем удалять, только запутаемся..

Семитысячник!!!
 
Назад
Сверху