Главная страница
    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.113 c
2-1158914654
jjj
2006-09-22 12:44
2006.10.08
Вопрос по TBitBtn


6-1147775541
Misha:Luk
2006-05-16 14:32
2006.10.08
как реализовать поиск в файлах по сети?


15-1158435187
Real
2006-09-16 23:33
2006.10.08
Какой каталогизатор посоветуете?


1-1156600280
nali
2006-08-26 17:51
2006.10.08
Мерцания при прорисовке ячеек грида


2-1157887069
Чудик
2006-09-10 15:17
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский