Виртуальная библиотека Delphi
- Название:Виртуальная библиотека Delphi
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Виртуальная библиотека Delphi краткое содержание
Виртуальная библиотека Delphi - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
4. Оставляйте по крайней мере 4 точки между компонентами, чтобы при смене положения границы на одну позицию компоненты не "наезжали" друг на друга.
5. Для однострочных меток TLabel с выравниванием alLeft или alRight установите AutoSize=True . Иначе AutoSize=False . Убедитесь, что достаточно пустого места у TLabel для изменения ширины фонта — 25% пустого места многовато, зато безопасно. При AutoSize=False Убедитесь, что ширина метки правильная, при AutoSize=True убедитесь, что есть свободное место для роста метки.
7. Для многострочных меток (word-wrapped labels), оставьте хотя бы одну пустую строку снизу.
8. Будьте осторожны при открытии проекта в среде Delphi при разных разрешениях. Свойство PixelsPerInch меняется при открытии формы. Лучше тестировать приложения при разных разрешениях, запуская готовый скомпилированный проект, а редактировать его при одном разрешении. Иначе это вызовет проблемы с размерами. Не изменяйте свойство PixelsPerInch самостоятельно!
9. В общем, нет необходимости тестировать приложение для каждого разрешения в отдельности, но стоит проверить его на 640x480 с маленькими и большими шрифтами и на более высоком разрешении перед продажей.
10. Уделите пристальное внимание принципиально однострочным компонентам типа TDBLookupCombo . Многострочные компоненты всегда показывают только целые строки, а TEdit покажет урезанную снизу строку. Каждый компонент лучше сделать на несколько точек больше. Даже при выполнении перечисленных инструкций, у вас могут возникнуть проблемы при переходе, например от Large fonts к Small fonts в Windows 95 при одном и том же разрешении. Бороться с этим помогают специально для этого разработанные компоненты. Если же вы решите самостоятельно изменять размеры компонентов, лежащих на форме, то вам могут помочь методы TCanvas.TextWidth и TCanvas.TextHeight .
7. Конвертация ICO в BMP.

Я создают toolbar, у меня есть иконки, но нет картинок в виде bitmap. Помогите!

Для преобразования файлов из одного формата в другой лучше всего иметь что-нибудь вроде HiJaak, который может преобразовывать форматы напрямую. Однако, будем считать, что у вас нет ничего, кроме Windows и Delphi. Следующая процедура может использоваться чтобы преобразовывать иконку в формат Windows Bitmap:
1. Покажите на экране иконку. Не имеет значения, как вы это сделаете.
2. Нажмите Alt-PrintScreen, чтобы скопировать текущее окно в буфер Clipboard.
3. Загрузите Paintbrush и сделайте Edit/Paste.
4. Выберите нужный кусок изображения и сделайте Edit/Copy. Перейдите к пункту Options/Image Attributes и установите размер области 32x32 точки.
5. Снова сделайте Edit/Paste.
6. Сохраните результат как BMP файл.
Лучше всего для редактирования и создания ресурсов (икон, картинок и т.п.) подходит Resource Workshop. Он включен в состав пакетов Borland Pascal 7.0 или Borland C++ 4.5, а также интегрирован в Borland C++ 5.0.

В Delphi 1.0 есть специальный файл (X:\DELPHI\BIN\WORKOPT.DOS) который необходимо поместить в каталог, где находится Workshop — в этом случае последний будет "понимать" ресурсы, создаваемые Delphi 1.0 (например *.DCR).
8. Когда используется свойство Glyph, как узнать, какой цвет прозрачный?
Delphi всегда принимает, что цвет пикселя в левом нижнем углу картинки является фоновым цветом и должен отображаться на экране как прозрачный. Это нигде не документировано, но если у вас есть исходники VCL, вы можете посмотреть код в BUTTONS.PAS .
9. Как отобразить bitmap в 256 цветах?

Как подгрузить 256 цветный bitmap из ресурса и отобразить его в нормальной палитре?

Обычно это делается следующим образом. Код Вадима Пузанова (Красноярск).
Image1.Bitmap.Handle := LoadBitmap(hInstance, 'BMP_NAME');
LoadBitmap загружает только картинку, без палитры. Если палитра у картинки отличается от системной, то ее надо устанавливать "вручную". Могут возникнуть проблемы, если на одной форме расположены две картинки с разными палитрами.
procedureXLoadBitmap(Instance: THandle; BitmapName: PChar; varHB: HBitmap; varHP: Palette);
var
DC: HDC;
BI: PBitMapInfo;
Pal: PLogPalette;
I: Integer;
ResIdHandle: THandle;
ResDataHandle: THandle;
Bitmap: HBitmap;
C: HWnd;
OldPalette, Palette: HPalette;
begin
Bitmap := 0;
Palette := 0;
HB := 0;
HP := 0;
{ Получить ресурс из модуля }
ResIDHandle := FindResource(Instance, BitmapName, RT_BITMAP);
ifResIDHandle <> 0 then
begin
ResDataHandle := LoadResource(Instance, ResIDHandle);
ifResDataHandle <> 0 then
begin
BI := LockResource(ResDataHandle);
ifBI <> nil then
begin
{ 256-цветный битмап? }
ifBI^.bmiHeader.biBitCount = 8 then
begin
{ Создать палитру }
GetMem(Pal, SizeOf(TLogPalette) + 256*SizeOf(TPaletteEntry));
forI := 0 to255 do withPal^.palPalEntry[I] do
begin
peRed := BI^.bmiColors[I].rgbRed;
peGreen:= BI^.bmiColors[I].rgbGreen;
peBlue := BI^.bmiColors[I].rgbBlue;
peFlags:= 0;
end;
Pal^.palNumEntries := 256;
Pal^.palVersion := $300;
Palette := CreatePalette(Pal^);
FreeMem(Pal, SizeOf(TLogPalette) + 256 * SizeOf(TPaletteEntry));
{ Привести цвета палитры в системные }
DC := CreateDC( 'Display', nil, nil, nil);
OldPalette := SelectPalette(DC, Palette, False);
UnrealizeObject(Palette);
RealizePalette(DC);
{ Создать битмап }
BitMap:= CreateDIBitmap(DC, BI^.bmiHeader, CBM_INIT,
@PByteArray(BI)^[SizeOf(TBitMapInfo) + SizeOf(TRGBQuad) * 256 - 4], BI^, DIB_RGB_COLORS);
{ Освободить ресурсы }
UnlockResource(ResDataHandle);
FreeResource(ResDataHandle);
SelectPalette(DC, OldPalette, False);
DeleteDC(DC);
end else
begin
{ Не 256-цветный битмап }
UnlockResource(ResDataHandle);
FreeResource(ResDataHandle);
BitMap := LoadBitmap(Instance, BitmapName);
end;
HB := Bitmap;
HP := Palette;
end;
end;
end;
end;
procedureTForm1.FormCreate(Sender: TObject);
var
HB: HBitmap;
HP: HPalette;
begin
XLoadBitmap(hInstance, 'PHOTO', HB, HP);
Image1.Picture.Bitmap.Handle := HB;
Image1.Picture.Bitmap.Palette := HP;
end;
10. Если я хочу рассылать EXE файл, созданный в Delphi, какие еще файлы нужно посылать с ним?
Hикакие. Все компилируется в .EXE файл. Конечно, если вы разработали другие файлы (HLP, данные и т.д. ), или если вы используете VBX/OCX файлы, тогда вы должны распространять и их заодно. Если вы используете файлы VBX, то в поставку нужно также включать BIVBX11.DLL.
Читать дальшеИнтервал:
Закладка: