Виртуальная библиотека Delphi

Тут можно читать онлайн Виртуальная библиотека Delphi - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Виртуальная библиотека Delphi
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Виртуальная библиотека Delphi краткое содержание

Виртуальная библиотека Delphi - описание и краткое содержание, автор Неизвестный Автор, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Виртуальная библиотека Delphi - читать онлайн бесплатно полную версию (весь текст целиком)

Виртуальная библиотека Delphi - читать книгу онлайн бесплатно, автор Неизвестный Автор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Ответ:

Создайте Bitmap и используйте свойство canvas класса TBitmap. Пример создает Bitmap, рисует на его canvas'е, выводит этот canvas на форму и освобождает bitmap.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

var bm : TBitmap;

begin

bm := TBitmap.Create;

bm.Width := 100;

bm.Height := 100;

bm.Canvas.Brush.Color := clRed;

bm.Canvas.FillRect(Rect(0, 0, 100, 100));

bm.Canvas.MoveTo(0, 0);

bm.Canvas.LineTo(100, 100);

Form1.Canvas.StretchDraw(Form1.ClientRect,Bm);

bm.Free;

end;

Вопрос:

В некоторых видео режимах прозрачная часть glyph'а стандартного TBitBtn становится видной. Как этого избежать?

Ответ:

В примере используется техника закраски прозрачной части glyph'а цветом кнопки на которой он находится — таким образом glyph кажется прозрачным.

Пример:

function InitStdBitBtn(BitBtn : TBitBtn; kind : TBitBtnKind) : bool;

var

Bm1 : TBitmap;

Bm2 : TBitmap;

begin

Result := false;

if Kind = bkCustom then exit;

Bm1 := TBitmap.Create;

case Kind of

bkOK : Bm1.Handle := LoadBitmap(hInstance, 'BBOK');

bkCancel : Bm1.Handle := LoadBitmap(hInstance, 'BBCANCEL');

bkHelp : Bm1.Handle := LoadBitmap(hInstance, 'BBHELP');

bkYes : Bm1.Handle := LoadBitmap(hInstance, 'BBYES');

bkNo : Bm1.Handle := LoadBitmap(hInstance, 'BBNO');

bkClose : Bm1.Handle := LoadBitmap(hInstance, 'BBCLOSE');

bkAbort : Bm1.Handle := LoadBitmap(hInstance, 'BBABORT');

bkRetry : Bm1.Handle := LoadBitmap(hInstance, 'BBRETRY');

bkIgnore : Bm1.Handle := LoadBitmap(hInstance, 'BBIGNORE');

bkAll : Bm1.Handle := LoadBitmap(hInstance, 'BBALL');

end;

Bm2 := TBitmap.Create;

Bm2.Width := Bm1.Width;

Bm2.Height := Bm1.Height;

Bm2.Canvas.Brush.Color := ClBtnFace;

Bm2.Canvas.BrushCopy(Rect(0, 0, bm2.Width, bm2.Height), Bm1, Rect(0, 0, Bm1.width, Bm1.Height), Bm1.canvas.pixels[0,0]);

Bm1.Free;

LockWindowUpdate(BitBtn.Parent.Handle);

BitBtn.Kind := kind;

BitBtn.Glyph.Assign(bm2);

LockWindowUpdate(0);

Bm2.Free;

Result := true;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

InitStdBitBtn(BitBtn1, bkOk);

end;

Вопрос:

Создание PolyPolygon используя массив точек?

Ответ:

Polygon — метод компонента TCanvas получает в качестве параметра динамический массив точек. Функция PolyPolygon() из Windows GDI получает указатель на массив точек.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

var

ptArray : array[0..9] of TPOINT;

PtCounts : array[0..1] of integer;

begin

PtArray[0] := Point(0, 0);

PtArray[1] := Point(0, 100);

PtArray[2] := Point(100, 100);

PtArray[3] := Point(100, 0);

PtArray[4] := Point(0, 0);

PtCounts[0] := 5;

PtArray[5] := Point(25, 25);

PtArray[6] := Point(25, 75);

PtArray[7] := Point(75, 75);

PtArray[8] := Point(75, 25);

PtArray[9] := Point(25, 25);

PtCounts[1] := 5;

PolyPolygon(Form1.Canvas.Handle, PtArray,PtCounts,2);

end;

Вопрос:

Как создать невизуальный компонент без иконки, которая изображается в палитре компонентов в "design-time" (вроде TField)?

Ответ:

Невизуальные компоненты без иконки удобны для субкомпонентов, связанных с какими-то другими компонентами. Создайте компонент как обычно, но используйте RegisterNoIcon вместо RegisterComponent.

Вопрос:

Как показывать нестандартный встроенный редактор (inplace editor) в ячейке stringgrid (например combobox).

Ответ:

См. пример

Пример:

procedure TForm1.FormCreate(Sender: TObject);

begin

{Высоту combobox'а не изменишь, так что вместо combobox'а будем изменять высоту строки grid'а !}

StringGrid1.DefaultRowHeight := ComboBox1.Height;

{Спрятать combobox}

ComboBox1.Visible := False;

ComboBox1.Items.Add('Delphi Kingdom');

ComboBox1.Items.Add('Королевство Дельфи');

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

{Перебросим выбранное в значение из ComboBox в grid}

StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] :=ComboBox1.Items[ComboBox1.ItemIndex];

ComboBox1.Visible := False;

StringGrid1.SetFocus;

end;

procedure TForm1.ComboBox1Exit(Sender: TObject);

begin

{Перебросим выбранное в значение из ComboBox в grid}

StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] :=ComboBox1.Items[ComboBox1.ItemIndex];

ComboBox1.Visible := False;

StringGrid1.SetFocus;

end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);

var R: TRect;

begin

if ((ACol = 3) AND (ARow <> 0)) then begin

{Ширина и положение ComboBox должно соответствовать ячейке StringGrid}

R := StringGrid1.CellRect(ACol, ARow);

R.Left := R.Left + StringGrid1.Left;

R.Right := R.Right + StringGrid1.Left;

R.Top := R.Top + StringGrid1.Top;

R.Bottom := R.Bottom + StringGrid1.Top;

ComboBox1.Left := R.Left + 1;

ComboBox1.Top := R.Top + 1;

ComboBox1.Width := (R.Right + 1) - R.Left;

ComboBox1.Height := (R.Bottom + 1) - R.Top;

{Покажем combobox}

ComboBox1.Visible := True;

ComboBox1.SetFocus;

end;

CanSelect := True;

end;

Вопрос:

Как узнать есть ли в заданном CD-ROM'е Audio CD?

Ответ:

Можно использовать функцию Windows API GetDriveType() чтобы определить является ли дисковод CD-ROM'мом. И функцию API GetVolumeInformation() чтобы проверить VolumeName на равенство 'Audio CD'.

Пример:

function IsAudioCD(Drive : char) : bool;

var

DrivePath : string;

MaximumComponentLength : DWORD;

FileSystemFlags : DWORD;

VolumeName : string;

Begin

result := false;

DrivePath := Drive + ':\';

if GetDriveType(PChar(DrivePath)) <> DRIVE_CDROM then exit;

SetLength(VolumeName, 64);

GetVolumeInformation(PChar(DrivePath),PChar(VolumeName), Length(VolumeName),nil,MaximumComponentLength,FileSystemFlags,nil,0);

if lStrCmp(PChar(VolumeName),'Audio CD') = 0 then result := true;

end;

function PlayAudioCD(Drive : char) : bool;

var mp : TMediaPlayer;

begin

result := false;

Application.ProcessMessages;

if not IsAudioCD(Drive) then exit;

mp := TMediaPlayer.Create(nil);

mp.Visible := false;

mp.Parent := Application.MainForm;

mp.Shareable := true;

mp.DeviceType := dtCDAudio;

mp.FileName := Drive + ':';

mp.Shareable := true;

mp.Open;

Application.ProcessMessages;

mp.Play;

Application.ProcessMessages;

mp.Close;

Application.ProcessMessages;

mp.free;

result := true;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

if not PlayAudioCD('D') then ShowMessage('Not an Audio CD');

end;

Вопрос:

Как узнать есть ли у мыши колесико?

Ответ:

Свойство "WheelPresent" глобального обьекта "mouse".

Вопрос:

События KeyPress и KeyDown не вызываются для клавиши Tab — как определить, что она была нажата?

Ответ:

На уровне формы клавиша tab обычно обрабатывается Windows. В примере создается обработчик события CM_Dialog для перехвата Dialog keys.

Пример:

type TForm1 = class(TForm)

private

procedure CMDialogKey( Var msg: TCMDialogKey ); message CM_DIALOGKEY;

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CMDialogKey(var msg: TCMDialogKey);

begin

if msg.Charcode <> VK_TAB then inherited;

end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if Key = VK_TAB then Form1.Caption := 'Tab Key Down!';

end;

Вопрос:

В чем отличие между Create(Self) и Create(Application)?

Ответ:

Self может быть использовано только в методе класса, и ссылается на текущий экземпляр класса. Таким образом "Self" в методе класса TForm1 ссылается на текущий экземпляр TForm1. При создании компонента Вы передаете его владельца (owner) в конструктор. При уничтожении формы или компонента автоматически уничтожаются и все компоненты владельцем которого она является. Таким образом если при создании формы передать в качестве владельца Application эта форма будет автоматически уничтожена при уничтожении Application. Если же при создании формы передать в качестве владельца другую форму, вновь созданная форма будет автоматически уничтоженн при уничтожении формы-владельца.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Неизвестный Автор читать все книги автора по порядку

Неизвестный Автор - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Виртуальная библиотека Delphi отзывы


Отзывы читателей о книге Виртуальная библиотека Delphi, автор: Неизвестный Автор. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x