Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

Без вашего кода наши экстрасенсорные способности - ничто...
mihali4 вне форума   Ответить с цитированием
Старый 13.12.2009, 04: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 в 04:58.
Siber_Dec вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


00:17.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.