Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

FormStyle=fsMdiChild и FormStyle=fsNormal отрисовыв. по разному?   Найти похожие ветки 

 
DelphiLexx ©   (2006-08-24 12:53) [0]

Скажите, пожалуйста, почему FormStyle = fsMdiChild и FormStyle = fsNormal отрисовываются по разному? И как заставить систему отрисовку FormStyle = fsMdiChild вести так же как и FormStyle = fsNormal.
Вот пример разной отрисовки для этих стилей.
Данный код позволяет скопировать в metafile внешний вид панельки на которой размещен рисунок и которая заходит за грань формы (т.е. не видна). Этот код работает для FormStyle = fsNormal, но не работает для MDI-приложения. Помогите реализовать работу этого кода и для MDI - приложений.


procedure TMainForm.Button1Click(Sender: TObject);
{Создает панельку с картинкой, которую мы затем хотим сохранить в MetaFile}
var
 img: TImage;
 pnl: TPanel;
begin
 pnl := TPanel.Create(form1);
 with pnl do
 begin
   Parent := form1;
   ParentColor := true;
   Top := 100;
   Left := form1.Width + 100;

   img := TImage.Create(pnl);
   with img do
   begin
     Parent := pnl;

     Stretch := false;
     AutoSize := false;
     Align := alNone;
     Picture.Metafile.LoadFromFile("D:\1\MyPicture.wmf");
     AutoSize := true;

     pnl.Width := img.Width;
     pnl.Height := img.Height;

     img.Align := alClient;
     img.Stretch := true;
   end;
 end;
end;

procedure
 TMainForm.SaveAsMetaFileClick(Sender: TObject);
{Непосредственно сохраняет панельку в MetaFile}
var
 i: integer;
 pt: TPoint;
 mf: TMetaFile;
 mfCanvas: TMetaFileCanvas;
begin

 if SaveDialog1.Execute then
 begin
   mf := TMetaFile.Create;
   try
     mf.Enhanced := true;
     mf.Width := form1.Width + 160;
     mf.Height := form1.ClientHeight;
     mfCanvas := TMetaFileCanvas.Create(mf, 0);
     try
       for i := 0 to form1.ControlCount - 1 do
         if Form1.Controls[i] is TPanel then
         begin
           pt.X := form1.HorzScrollBar.Position + form1.Controls[i].Left;
           pt.Y := form1.VertScrollBar.Position + form1.Controls[i].Top;
           TPanel(form1.Controls[i]).PaintTo(mfCanvas.handle, pt.X, pt.Y);
         end;
     finally
       mfCanvas.Free;
     end;
     try
       mf.SaveToFile(SaveDialog1.FileName);
     except
       MessageBox(self.Handle,  "Файл не удалось сохранить.",  "Ошибка",  MB_ICONERROR or MB_OK)
     end;
   finally
     mf.Free;
   end;
 end;
end;

procedure
 TMainForm.Button2Click(Sender: TObject);
begin
{создаем форму на панели}
 Form1 := TForm.Create(panel1);
 with Form1 do
 begin
   Name := "form1";
   Color := clWhite;
   Parent := Panel1;
   BorderStyle := bsNone;
   Align := alClient;
   AutoScroll := true;
   DoubleBuffered := true;
   Show;
 end;
 Button1Click(nil);
end;

Проект полностью:
http://up.spbland.ru/files/06082431/


 
GrayFace ©   (2006-08-25 13:52) [1]

Не знаю. Попробуй использовать fsNormal.

DelphiLexx ©   (24.08.06 12:53)
if Form1.Controls[i] is TPanel then

А причем тут TPanel?

DelphiLexx ©   (24.08.06 12:53)
MessageBox(self.Handle,  "Файл не удалось сохранить.",  "Ошибка",  MB_ICONERROR or MB_OK)

Зачем вместо подробной ошибки выдавать свою заглушку?


 
clickmaker ©   (2006-08-25 16:14) [2]


> почему FormStyle = fsMdiChild и FormStyle = fsNormal отрисовываются
> по разному?

поройся в сырцах VCL... может выяснишь, потомки тебе спасибо скажут потом )



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.123 c
15-1158636507
Весь в делах
2006-09-19 07:28
2006.10.08
Какую лапшу на уши вешают?


2-1158913555
Dr. Genius
2006-09-22 12:25
2006.10.08
Защита DFM-файлов


2-1158589894
SamProf
2006-09-18 18:31
2006.10.08
Работа с BAT файлами


15-1158323292
Real
2006-09-15 16:28
2006.10.08
Чем лучше печатать исходники?


2-1158657920
RomanH
2006-09-19 13:25
2006.10.08
Копирование файлов