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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2011, 09:56   #1
igorium
 
Регистрация: 23.08.2011
Сообщений: 8
Вопрос Как сделать "Принтскрин" формы, которая не помещается на экране.

Всем привет.
Задача сохранить все, что видно на форме в графический файл.
Грубо говоря сделать принтскрин формы, но проблема усугубляется тем, что форма не помещается на экране, а для её просмотра нужно использовать скрулеры.

Я делаю так:

Код:
procedure TTreeForm.bbClick(Sender: TObject);
var Bit : TBitmap;
begin
Bit := TBitmap.Create;
Bit.Width := TreeForm.ClientWidth;
Bit.Height := TreeForm.ClientHeight;
Bit.Canvas.CopyRect(Rect(0, 0, TreeForm.ClientWidth, TreeForm.ClientHeight), TreeForm.Canvas, Rect(0, 0, TreeForm.ClientWidth, TreeForm.ClientHeight));
Bit.SaveToFile('d:\screen.bmp');
end;
Но сохраняется только видимая на экране часть формы.
А у меня форма занимает несколько экранов и нужно, чтобы ВСЯ форма сохранилась в файл.

Нашел еще один вариант:
Код:
Bit := GetFormImage;
Bit.SaveToFile(ExtractFilePath(ParamStr(0)) + 'screen.bmp');
Но результат точно такой же.
Я прям в отчаянии
igorium вне форума Ответить с цитированием
Старый 10.10.2011, 10:48   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А так
Код:
  keybd_event(VK_SNAPSHOT, 1, 0, 0);
  if Clipboard.HasFormat(CF_BITMAP) then begin
    BitMap:=TBitMap.Create;
    BitMap.Assign(Clipboard);
    BitMap.SaveToFile('E:\Otladka.bmp');
    BitMap.Free;
  end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.10.2011, 13:13   #3
igorium
 
Регистрация: 23.08.2011
Сообщений: 8
По умолчанию

Не работает
Сохраняет или панель Delphi (если под Дельфи) или панель FAR'a, если запускаю экзешник из под Фара...
igorium вне форума Ответить с цитированием
Старый 10.10.2011, 22:06   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Да что ты говоришь? Пускаю под Д7 хоть из по дельфей, хоть из exe нет проблем. Сделай так
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);мк
var BitMap: TBitMap;
begin
  keybd_event(VK_SNAPSHOT, 1, 0, 0);
  if clipboard.HasFormat(CF_BITMAP) then begin
    BitMap:=TBitMap.Create;
    BitMap.Assign(Clipboard);
    BitMap.SaveToFile('E:\Otladka.bmp');
    BitMap.Free;
  end;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 10.10.2011 в 22:08.
Аватар вне форума Ответить с цитированием
Старый 11.10.2011, 21:43   #5
igorium
 
Регистрация: 23.08.2011
Сообщений: 8
Печаль

Да вроде теперь нормально сохраняет, только ОПЯТЬ НЕ ТО.
Сохраняется опять ТОЛЬКО видимая часть экрана.
Вот результат сохранения программы -

Последний раз редактировалось mihali4; 21.10.2011 в 14:19.
igorium вне форума Ответить с цитированием
Старый 12.10.2011, 07:23   #6
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

может мы саму ошибку тут исправим, чем мучиться с принскрином?
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 12.10.2011, 09:21   #7
igorium
 
Регистрация: 23.08.2011
Сообщений: 8
По умолчанию

Не понял какую ошибку надо исправлять?
Пока есть задача и нет решения

Последний раз редактировалось mihali4; 21.10.2011 в 14:19.
igorium вне форума Ответить с цитированием
Старый 12.10.2011, 10:21   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
но проблема усугубляется тем, что форма не помещается на экране,
Так у вас наверно не форма не помещается на экран, а визуальные объекты не умещаются на форме? ИМХО наврядли вы найдете решение этой задачи.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.10.2011, 10:43   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

cудя по скрину так и есть.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось mihali4; 21.10.2011 в 14:20.
raxp вне форума Ответить с цитированием
Старый 12.10.2011, 21:49   #10
igorium
 
Регистрация: 23.08.2011
Сообщений: 8
По умолчанию

Принскрин я привел для примера - создал пустую форму и кинул туда пару кнопок.
Я уже раз 10 создал тестовые формы, чтобы проверить разные варианты для решения этой задачи.
В моей РЕАЛЬНОЙ задачи у меня форма растянута на весь экран, но огромное количество панелей (~ 50-100 штук) не помещается на экран и большая их часть расположены за пределами экрана на форме.

Последний раз редактировалось mihali4; 21.10.2011 в 14:20.
igorium вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? vedro-compota JavaScript, Ajax 10 14.12.2010 21:05
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
Как сделать кнопку "больше"-"меньше" Clericos HTML и CSS 8 30.09.2009 20:20
C++, препроцессор, как из "int" сделать "char"? Максай Помощь студентам 3 05.09.2008 08:16
сделать окно "открыть","сохранить как" blackstersl Общие вопросы Delphi 1 24.08.2008 10:31