Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.043 c
15-1158160397
Слоник
2006-09-13 19:13
2006.10.08
Равноудаление и все-все-все


15-1158561071
Колдун
2006-09-18 10:31
2006.10.08
Фэнтези


15-1157627753
Chort
2006-09-07 15:15
2006.10.08
13 сентября - День компьютерщика и программиста


15-1158490716
X9
2006-09-17 14:58
2006.10.08
компиляция программ во FreePascal для MS-DOS


15-1158332236
Deqww
2006-09-15 18:57
2006.10.08
Рекурсия - непонятная штука!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский