Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2009, 03:45   #11
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

OCTAGRAM, программа великолепна, но вот почему-то на нажатия кнопочки не реагируют(( да и что означает
Цитата:
PControl = ^TControl
это очто-то с динамической памятью связано? без этого мона, а? просто мы только начали ООП изучать, только самые азы...
когда всё становится на свои места, выясняется, что это кладбище...

Последний раз редактировалось HoOpe; 14.03.2009 в 03:48.
HoOpe вне форума Ответить с цитированием
Старый 14.03.2009, 11:02   #12
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Цитата:
Сообщение от HoOpe Посмотреть сообщение
4) перемещение по кнопкам производиться с помощью клавиш навигации, выбор кнопка-энтер
Вот здесь я накосячил. У меня нажатие пробелом. Это надо поправить в TButton.SendKey, вместо ' ' поставить #13.

Цитата:
Сообщение от HoOpe Посмотреть сообщение
да и что означает


это очто-то с динамической памятью связано? без этого мона, а? просто мы только начали ООП изучать, только самые азы...
У меня все объекты статические и объявлены в var.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/

Последний раз редактировалось Stilet; 16.03.2009 в 08:41.
OCTAGRAM вне форума Ответить с цитированием
Старый 15.03.2009, 01:10   #13
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

а что тогда означает этот значок
Цитата:
PButton = ^TButton;
и вот это что
Цитата:
procedure Erase; virtual;
?? в универе нам такой уровень не давали еще(((
когда всё становится на свои места, выясняется, что это кладбище...
HoOpe вне форума Ответить с цитированием
Старый 15.03.2009, 13:06   #14
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

PButton — указатель на TButton.

virtual — значит, метод виртуальный. Если метод виртуальный, то вызывается реализация в потомке, даже если точный потомок неизвестен. Вот, например, TButton.SendKey вызывает виртуальный Press. TButton.Press ничего не делает, но, как можно видеть, при нажатии на кнопки что–то всё–таки происходит. Это от того, что Press виртуален и переопределён в потомках, и вызывается Press потомка, а не TButton.

Без виртуальных методов программирование не объектно–ориентированное, а объектное.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 16.03.2009, 08:41   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тема интересная. Вот мой пример:
Может пригодится. Графикой не озабачивался, зато события прикрепил
И наворотов тут минимум окромя работе с мышкой, кою можно убрать.

Код:
uses graph,dos,crt;
type
 TButton=Object
  Left,Top,Width,Height,color,Tip:integer;
  Caption:string;MouseIn,LastMouseIn:boolean;
  OnMouseMove:procedure(Sender:TButton);
  OnMouseEnter:procedure(Sender:TButton);
  OnClick:procedure(Sender:TButton);
  Procedure Draw;
  procedure IfMouseMove;
  constructor init;
 end;
{******************************}
function XMouse:integer;var r:registers;begin r.ax:=3;intr($33,r);XMouse:=r.cx; end;
function YMouse:integer;var r:registers;begin r.ax:=3;intr($33,r);YMouse:=r.dx; end;
function PushMouse:integer;var r:registers;begin r.ax:=5;intr($33,r);PushMouse:=r.ax; end;
function UnPushMouse:integer;var r:registers;begin r.ax:=6;intr($33,r);UnPushMouse:=r.ax; end;
procedure HideMouse;var r:registers;begin r.ax:=2;intr($33,r);end;
procedure ShowMouse;var r:registers;begin r.ax:=1;intr($33,r);end;
{******************************}
 constructor TButton.init;
 begin
  lastmousein:=not mousein;
 end;
{******************************}
 procedure TButton.IfMouseMove;
 var s:string;
 begin
   mousein:=((xmouse>=left)and(xmouse<=(left+width))) and
    ((ymouse>=top)and(ymouse<=(top+height)));
   OnMouseMove(self);
   if mousein and (Pushmouse<>0) then begin
    setlinestyle(0,1,3);    self.draw;
   end;
   if mousein and (UnPushmouse<>0) then begin
    setlinestyle(0,1,1);    self.draw;
    OnClick(self);
   end;
   lastmousein:=mousein;
 end;
 procedure TButton.Draw;
 const bord=5;
 var Romb:array[1..5] of PointType;
 begin
 if lastmousein=mousein then exit;
  if width=0 then width:=100;
  if height=0 then height:=50;
  if color=0 then color:=lightgray;
    setcolor(color);
    setfillstyle(1,color);
  if tip=0 then begin
    bar(left,top,left+width,top+height);
    {floodfill(left+1,top+1,color);}
    setcolor(black);
    rectangle(left+bord,top+bord,left+width-bord,top+height-bord);
  end;
  if tip=1 then begin
    {setcolor(color);}
  romb[1].x:=left;
   romb[1].y:=top+height div 2;
  romb[2].x:=left+ width div 2;
   romb[2].y:=top;
  romb[3].x:=left+width;
   romb[3].y:=top+height div 2;
  romb[4].x:=left+width div 2;
   romb[4].y:=top+height;
 setfillstyle(1,color);
 setcolor(black);
 fillpoly(4,romb);
  end;
    outtextxy(left+width div 2-(length(caption) div 2)*10,
    top+height div 2-5,caption);
 end;
{******************************}
procedure Button1MouseMove(Sender:TButton); far;
 begin
 with sender do begin
  if mousein then color:=darkgray else color:=lightgray;
  HideMouse; sender.draw;showmouse;
 end;
 end;
{******************************}
procedure ButtonClick(Sender:TButton); far;
 begin
   setfillstyle(1,black);setcolor(white);
   bar(10,10,100,20);
  with sender do begin
   outtextxy(10,10,caption);
  end;
 end;

var b2,bb,b:Tbutton;m,g:integer;
 r:registers;
begin
g:=vga;m:=vgahi;
initgraph(g,m,'EGAVGA.BGI');
r.ax:=0;intr($33,r);
showMouse;
{writeln(grapherrormsg(graphresult));{}
with b do begin left:=100; top:=100; caption:='Button1';
OnClick:=ButtonClick;
 OnMouseMove:=Button1MouseMove; init;draw;
end;
with b2 do begin left:=300; top:=150; caption:='Button3';
OnClick:=ButtonClick;
 OnMouseMove:=Button1MouseMove;init;draw;
end;
with bb do begin left:=100; top:=300; caption:='Button2';tip:=1;
OnClick:=ButtonClick;
 OnMouseMove:=Button1MouseMove;init;draw;
end;
repeat
 b.IfMouseMove;
 b2.IfMouseMove;
 bb.IfMouseMove;
until keypressed;
closegraph;
end.
I'm learning to live...

Последний раз редактировалось Stilet; 16.03.2009 в 08:47.
Stilet вне форума Ответить с цитированием
Старый 16.03.2009, 10:43   #16
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
OnMouseMoverocedure(Sender:TButto n);
OnMouseEnterrocedure(Sender:TButt on);
OnClickrocedure(Sender:TButton);
Procedure Draw;
Напомню, что object ведёт себя как record, в том числе передаётся копированием.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 16.03.2009, 11:58   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в том числе передаётся копированием.
Зинаю. Я хотел показать что разные события можно назначать. Просто руки не дошли. К тому же так нагляднее.

p.s. я вот только забыл как в паскале проверять на ассигнование "события"...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2009, 09:31   #18
Tata_P
 
Регистрация: 23.03.2009
Сообщений: 3
По умолчанию

а можно какие-то пояснения, хотя б краткие к этому меню?
Tata_P вне форума Ответить с цитированием
Старый 25.03.2009, 12:38   #19
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

Цитата:
3) текущей является кнопка серого цвета, неактивная - зеленая
странно, я бы наоборот сделал )
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
4 задачи паскаль ООП. Срок вторник днем по москве thebestneo Фриланс 2 21.12.2010 13:03
Паскаль графика BuTeK1 Паскаль, Turbo Pascal, PascalABC.NET 0 08.01.2009 11:01
2 задачки по ООП Паскаль. по цене договоримся thebestneo Фриланс 1 21.12.2008 19:32