Re: Запутался в связях
а потом вторую
Это косяк экселя. Через кнопку дизайнер открыть отчет rep. Вот там и увидите, что картинки с бд не тянутся в печатную форму
My Visual Database → Russian → Запутался в связях
а потом вторую
Это косяк экселя. Через кнопку дизайнер открыть отчет rep. Вот там и увидите, что картинки с бд не тянутся в печатную форму
Поле с БД с картинкой я передаю, вытаскиваю его на канвас - и получаю при превью набор символов. По логике, наверное, надо располагать объект "Картинка" ФР на канвас и в путь его вписывать путь хранения картинки своей БД, ну это как по мне.
По ссылке не нашел про картинки ничего
Подозреваю, что от вас прячут эту информацию... Но вы не сдавайтесь, попробуйте ещё раз почитать.
Может вы раздел откроете или PDF по фастрепорт скачаете.
Вот например открытый раздел "Построение отчетов" и видим целый раздел "Отчет с картинками".
Попробуйте заменить GIF на JPG или PNG.
Да Константин, вы полностью правы.
Из той же справки по ФастРепорт. Раздел про рисунки.
Следующий объект, который мы рассмотрим - это объект "Рисунок". Он также довольно часто используется в отчетах. С помощью объекта вы можете вставить в отчет логотип вашей фирмы, фотографию сотрудника или любую другую графическую информацию. Объект способен отображать графику в формате BMP, JPEG, ICO, WMF, EMF.
Насчет скруглений - можно заморочиться и сделать так:
1) убрать штатные границы и добавить картинки с нарисованными круглыми рамками
2) убрать штатные границы и добавить TShape c закругленными углами.
3) убрать штатные границы и рисовать на канве формы/панелей
Константин,
Я попробовал третий вариант. Рабочий. Только требует дополнительной обработки в событии OnPaint
Мда... дело было не в бобине.... с жпг все круто. Спасибо
Константин,
Я попробовал третий вариант. Рабочий. Только требует дополнительной обработки в событии OnPaint
Выглядит прилично, как я понимаю, возможен вариант с универсальным обработчиком формы OnPaint, в котором производится обход компонентов на форме и отрисовка рамок при необходимости. И кода будет поменьше, чем при создании кучи TShape
Да все именно так.
Для всех панелей создается универсальный OnPaint в котором и отрисовываются границы и закрашивание при необходимости.
При старте формы создаются панели и накладываются компоненты.
В событии OnPaint вызывается процедура отрисовки/перерисовки.
Tag формы использую для запоминания что панели созданы во избежании повторного создания и ошибки.
В некоторых случаях нужно использовать небольшую задержку по таймеру для отрисовки/перерисовки.
Код проще из за упрощения рисования RoundRect.
var
...
arrFrm: array of TAForm = [Form1, Form2, Form3, Form4, Form5]; // list of Forms
procedure Form1_OnShow (Sender: TObject; Action: string);
begin
create(Sender);
end;
...
procedure create(Sender: TObject);
var
tmpP: TdbPanel;
i: integer;
tmpMemo: TdbMemo;
...
tmpForm: TAForm;
begin
tmpForm := TAForm(Sender);
if tmpForm.Components[i] is tdbEdit then // Edit
begin
tmpEdit := TdbEdit(tmpForm.Components[i]);
tmpEdit.borderstyle := bsNone;
tmpP := tdbpanel.create(tmpForm);
tmpP.name := 'tmp_'+tmpEdit.name;
tmpP.Caption := '';
tmpP.Parent := tmpEdit.Parent;
tmpP.BevelWidth := 0;
tmpP.SetBounds(tmpEdit.Left, tmpEdit.Top, tmpEdit.Width, tmpEdit.Height);
tmpP.Anchors := tmpEdit.Anchors;
//
tmpEdit.Parent := tmpP;
TControl(tmpEdit).SetBounds(4, 2, tmpEdit.Width - 8, tmpEdit.Height - 4);
end;
...
procedure draw;
var // Draw and ReDraw
i, f: integer;
tmpPan: TdbPanel;
begin
for i := 0 to arrFrm[f].componentcount - 1 do
begin
if (arrFrm[f].Components[i] is tdbpanel) and (copy(tdbpanel(arrFrm[f].Components[i]).name, 1, 4) = 'tmp_') then
begin
tmpPan := TdbPanel(arrFrm[f].Components[i]);
tmpPan.canvas.brush.color := clWhite;
tmpPan.canvas.pen.color := clBlack;
tmpPan.canvas.roundRect(0, 0, tmpPan.width, tmpPan.height, 10, 10);
end;
end;
end;
...
procedure onp(Sender: Tobject); // OnPaint event
begin
draw;
end;
My Visual Database → Russian → Запутался в связях
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi