Виртуальная библиотека Delphi - [82]
> 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);
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.