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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2009, 03:21   #1
Siber_Dec
 
Регистрация: 10.08.2007
Сообщений: 9
По умолчанию MDIChild снова и снова...

В нескольких словах: создаю главную форму, добавляю потомка, рисую в окне потомка всё прекрасно, но если создать ещё одного потомка действия дублируются и в нём, как избавиться?
Siber_Dec вне форума Ответить с цитированием
Старый 13.12.2009, 03:23   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Без вашего кода наши экстрасенсорные способности - ничто...
mihali4 вне форума Ответить с цитированием
Старый 13.12.2009, 03:24   #3
Siber_Dec
 
Регистрация: 10.08.2007
Сообщений: 9
По умолчанию

в окне потомка рисую на Bitmap'e локальном создающимся при создании дочерней формы, из главной формы мигрируют только инструменты, в главную только координаты курсора

03:31

Создание потомка
Код:
procedure TForm1.N9Click(Sender: TObject);
begin
  Form5:= TForm5.Create(Application);
  Form5.Parent:= self;
  Form5.Visible:= True;
end;
Старый метод рисования (сейчас меняется для ускорения)
Код:
procedure TForm5.ControlBar1Click(Sender: TObject);
begin
  case SelectContr of
      LineHand: begin
         if not firstClick then
           firstClick:= True
         else begin
           Image1.Canvas.Pen.Color:= clBlack;
           SetLength(Lines, Length(Lines)+1);
           Lines[Length(Lines)-1].SPos.X:= dx;
           Lines[Length(Lines)-1].SPos.Y:= dy;
           Lines[Length(Lines)-1].EPos.X:= nx;
           Lines[Length(Lines)-1].EPos.Y:= ny;
           Image1.Canvas.MoveTo(dx, dy);
           Image1.Canvas.LineTo(nx, ny);

           dx:= nx;
           dy:= ny;
         end;
      end;
      VLookHole: begin
           SetLength(VHoles, Length(VHoles)+1);
           VHoles[Length(VHoles)-1].X:= dx;
           VHoles[Length(VHoles)-1].Y:= dy;
           Image1.Canvas.Ellipse(dx-5, dy-5, dx+5, dy+5);
      end;
  end;
end;

procedure TForm5.ControlBar1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  i: integer;
begin
  RsRuler1.HairLinePos := X;
  RsRuler2.HairLinePos := X;
  RsRuler3.HairLinePos := Y;
  RsRuler4.HairLinePos := Y;

  x:= 15*(x div 15);
  y:= 15*(y div 15);
  if x < 15 then
    x:= 15;
  if y < 15 then
    y:= 15;
  case SelectContr of
      LineHand: begin
           nx:= x;
           ny:= y;
           if not firstClick then begin
             dx:= x;
             dy:= y;
           end else begin
             Image1.Canvas.Pen.Color:= clWhite;
             Image1.Canvas.MoveTo(dx, dy);
             Image1.Canvas.LineTo(olddx, olddy);
             Image1.Canvas.Pen.Color:= clBlack;
             Image1.Canvas.MoveTo(dx, dy);
             Image1.Canvas.LineTo(nx, ny);
           end;
           olddx:= nx;
           olddy:= ny;
      end;
      VLookHole: begin
        dx:= x;
        dy:= y;
      end;
  end;

  for i:= 0 to Parent.ComponentCount-1 do
    if Parent.Components[i].Name = 'StatusBar1' then begin
      TStatusBar(Parent.Components[i]).Panels[0].Text:= Format('X = %d', [Round(RsRuler1.Pos2Unit(X))]);
      TStatusBar(Parent.Components[i]).Panels[1].Text:= Format('Y = %d', [Round(RsRuler3.Pos2Unit(Y))]);
      break;
    end;
end;
// рисуем сеточку
procedure TForm5.DrawGreed;
var
  ix, iy: word;
begin
  ix:= Round((Runner-1)*Scalle);
  iy:= ix;
  while iy < Image1.Height do begin
    while ix < Image1.Width do begin
      Image1.Canvas.Pixels[ix, iy]:= clBlack;
      ix:= ix+Round((Runner-1)*Scalle);
    end;
    iy:= iy+Round((Runner-1)*Scalle);
    ix:= Round((Runner-1)*Scalle);
  end;
end;
У нас принято пользоваться кнопочкой "Правка", дабы не плодить посты подряд, друг за другом.
Модератор

Все обсуждение после утра - спать, спать, спать...

Последний раз редактировалось mihali4; 13.12.2009 в 03:58.
Siber_Dec вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Снова эпидемия vasek123 Свободное общение 56 03.12.2009 15:35
И снова файл ТРОЯН=) Помощь студентам 4 23.04.2009 21:50
И снова Chart SunKnight Общие вопросы Delphi 5 08.02.2008 11:58
и снова Mdi Баламут Общие вопросы Delphi 1 28.11.2006 07:03