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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2010, 16:43   #1
LexaL
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 12
По умолчанию Работа с двумя компонентами Image одновременно

Привет!
У меня на одной форме 2 Image, с помощью компонента RadioGroup устанавливаю на каком из них рисовать.Рисование фигуры выполняется при нажатии на кнопку. Когда устанавливаю,что б рисовалось на первом имейдже рисует на втором, а первый просто красит цветом.
Почему? Не могу понять все написано вроди так как надо. Подскажите в чем может быть причина.
LexaL вне форума Ответить с цитированием
Старый 24.10.2010, 16:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Космос говорит что код 404 error not found
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2010, 16:51   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Не могу понять все написано вродЕ так, как надо.
И где это написано ? На заборе ?
Или вы считаете, что мы тут все - телепаты ?
mihali4 вне форума Ответить с цитированием
Старый 24.10.2010, 17:11   #4
LexaL
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 12
По умолчанию

В чем же пробоема?

Вот код:
Код:
procedure TForm1.SetButtonClick(Sender: TObject);
 var cod,k:integer;
begin
Image1.Canvas.Brush.Color :=clWhite;
 if RadioGroup1.ItemIndex = 0 then
  begin
 Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
val (Edit1.Text,k,cod);
 if cod<>0 then Showmessage ('Ошибка') else
  begin
    h.SetValue(k);
    h.Draw;
    h.GetValue;
     end end
    else
    begin
     Image2.Canvas.Brush.Color :=clWhite;
   Image2.Canvas.Rectangle(0,0,Image2.Width,Image2.Height);
  val (Edit1.Text,k,cod);
 if cod<>0 then Showmessage ('Ошибка') else
  begin
    h1.SetValue(k);
    h1.Draw;
    h1.GetValue;
   end;
 end;
 end;
У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Модератор

Последний раз редактировалось Stilet; 24.10.2010 в 19:56.
LexaL вне форума Ответить с цитированием
Старый 24.10.2010, 19:49   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а кто такой h?
и что за процедура Draw?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.10.2010, 22:31   #6
LexaL
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 12
По умолчанию

h это переменная класса TAngel, это мой класс в нем есть процедура draw
Код:
procedure TAngel.Draw;
 begin
 Can.Brush.Color:=color;
 color:=clred;
 Can.Pie(XPos, YPos, XPos+150, YPos+150,XPos+75+round(75*cos(Value*pi/180)),YPos+75+round(75*sin(Value*pi/180)),XPos+150, YPos+75)    ;
 end;

Последний раз редактировалось mihali4; 24.10.2010 в 23:30.
LexaL вне форума Ответить с цитированием
Старый 24.10.2010, 22:33   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

блин, ну а кт такой Can, с его методом PIE?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.10.2010, 22:36   #8
LexaL
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 12
По умолчанию

Canvas a pie - рисует часть круга
LexaL вне форума Ответить с цитированием
Старый 24.10.2010, 22:45   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

где рисует?
код сразу весь выложить трудно?
кому из нас нужна помощь?

я вообще не заметил чтоб ваши процедуры где то получали как параметр, то где рисовать...скорее всего вы в коде написали рисование строго на Image1 вот оно и рисует.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.10.2010, 23:25   #10
LexaL
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 12
По умолчанию

Код:
Unit1 
 var   Form1: TForm1;
   H,H1:TAngel; x,y:integer;
implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
 h:=TAngel.Create (10,10,Image1.Canvas) ;
 h1:=TAngel.create(10,10,Image2.Canvas);
end;

procedure TForm1.SetButtonClick(Sender: TObject);
 var cod,k:integer;
begin
Image1.Canvas.Brush.Color :=clWhite;
 if RadioGroup1.ItemIndex = 0 then
  begin
 Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
val (Edit1.Text,k,cod);
 if cod<>0 then Showmessage ('Ошибка') else
  begin
    h.SetValue(k);
    h.Draw;
    h.GetValue;
    {Edit1.Text:='';
    Edit1.SetFocus;}
    end end
    else
    begin
     Image2.Canvas.Brush.Color :=clWhite;
   Image2.Canvas.Rectangle(0,0,Image2.Width,Image2.Height);
  val (Edit1.Text,k,cod);
 if cod<>0 then Showmessage ('Ошибка') else
  begin
    h1.SetValue(k);
    h1.Draw;
    h1.GetValue;
    {Edit1.Text:='';
    Edit1.SetFocus;}
    end;
 end;
 end;

procedure TForm1.ClearClick(Sender: TObject);
begin
 if RadioGroup1.ItemIndex = 0 then
 begin
h.Free;
h:=nil; end
else
 begin
h1.Free;
h1:=nil;
end;
end;

procedure TForm1.ColorClick(Sender: TObject);
begin
if RadioGroup1.ItemIndex = 0 then
 begin
   if  ColorDialog1.Execute then
   begin
   h.SetColor(ColorDialog1.Color) ;
   h.Draw
   end;
 end
else
 if  ColorDialog1.Execute then
   begin
   h1.SetColor(ColorDialog1.Color) ;
   h1.Draw
   end;
end;

procedure TForm1.ChangeButtonClick(Sender: TObject);
var cod:integer;
begin
  if RadioGroup1.ItemIndex = 0 then
  begin
  val(Edit2.Text,x,cod);
   if cod <> 0 then showmessage ('Error') else
    val (Edit3.Text,y,cod);
     if cod <> 0 then showmessage ('Error') else
      begin
     Image1.Canvas.Brush.Color :=clWhite;
     Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
        h.SetXY(x,y);
       h.SetValue(strtoint(Edit1.Text));
    h.Draw;
    h.GetValue;
    end
  end
   else
   begin
      val(Edit2.Text,x,cod);
   if cod <> 0 then showmessage ('Error') else
    val (Edit3.Text,y,cod);
     if cod <> 0 then showmessage ('Error') else
      begin
     Image2.Canvas.Brush.Color :=clWhite;
     Image2.Canvas.Rectangle(0,0,Image2.Width,Image2.Height);
        h1.SetXY(x,y);
       h1.SetValue(strtoint(Edit1.Text));
    h1.Draw;
    h1.GetValue;
    end;
  end;

end;
Код:
Unit2
unit Unit2;

interface
  uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
 TAngel=class

private
   Value:integer;
   Xpos,Ypos:integer;
   Can:TCanvas;
public
     constructor create(X,Y:integer;NewCanvas:TCanvas);
     procedure SetValue (NewValue:integer);
     function GetValue:integer;
    function Plus (Increment:integer):integer;
     function Minus (Decrement:integer):integer;
     procedure Draw;
     destructor Destroy;
      procedure SetColor(c:TColor);
      procedure SetXY(NewX,NewY:integer);
end;
  var  Color:TColor;

implementation
  procedure TAngel.SetValue (NewValue:integer);
   begin
        Value:=NewValue mod 360;
        
   end;

   constructor TAngel.Create(X,Y:integer;NewCanvas:TCanvas);
    begin
      inherited Create;
      Xpos:=X;
      Ypos:=Y;
      Value:=45;
      Can:=NewCanvas;
     end;


 destructor TAngel.Destroy;
begin 
  inherited Destroy;
end;



procedure TAngel.Draw;
 begin
 Can.Brush.Color:=color;
 color:=clred;
 Can.Pie(XPos, YPos, XPos+150, YPos+150,XPos+75+round(75*cos(Value*pi/180)),YPos+75+round(75*sin(Value*pi/180)),XPos+150, YPos+75)    ;
 end;
 
    function  TAngel.GetValue:integer;

    begin
        result:=Value;
     end;

   procedure  TAngel.SetColor(c:TColor);
     begin
     Color:=c;
     end;
   procedure TAngel.SetXY(NewX,NewY:integer);
    begin
     XPos:=NewX;
     YPos:=NewY;
    end;



   end.
LexaL вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с компонентами стороннего приложения imprezident Win Api 1 30.05.2009 22:12
Работа с компонентами Делфи Ainur Помощь студентам 2 22.05.2009 11:56
Работа с компонентами Ky3Heu, Общие вопросы Delphi 2 24.04.2009 11:58
Работа с компонентами Ehlib cherry25 БД в Delphi 4 26.02.2009 10:20
работа с компонентами через WinApi user_jasser Win Api 17 17.11.2008 22:11