- Как уменьшить размер исполняемого файла программы?
- Как заставить появляться хинт, когда я захочy ?
- Как показать первый кадр AVI-файла?
- Как заставить TEdit не 'пикать' при нажатии недопустимых клавиш?
- Функция keybd_event() принимает значения до 244 - как мне отправить нажатие клавиши с кодом #255 в элемент управления Windows?
- Как писать текст в StringGrid в стиле Exel (не обрезая, если он не помещается в ячейку)
- Как извлечь Red, Green, и Blue компонент из определенного цвета?
- Как отображать ComboBox в текущей позиции курсора TMemo
- Как заставить TMediaPlayer проигрывать одно и тоже бесконечно? AVI например?
- При показе максимизированное формы она перекрывает task bar и не выравнивается по верху экрана. В чем тут дело?
- Как изменить шрифт hint'а?
- Как в RichEdit или TMemo реализовать при нажатии Enter-а позиционирование курстора в позицию
как в предыдущей строке
- Как сменить дисковод, откуда MediaPlayer проигрывает аудио CD?
- Я хочу вставить escape code в строку при использовании функции Format(). Например, я хочу создать строку, содержащую символ табуляции. В "C" я бы написал что-то вроде sprintf(buffer, "%s\t%s", str);. А как это будет на Pascal'e?
- Как запретить изменение размера моего компонента в design-time?
- Есть ли в Delphi эквивалент функции SendKeys Visual Basic'а?
- Как разместить прозрачную надпись на TBitmap?
- При выполнении диалога FontDialog со свойством Device равным fdBoth or fdPrinter, появляется ошибка "There are no fonts installed".
- Как преобразовать цвета в строку - название цвета VCL?
- Как получить число и список всех компонентов, расположенных на TNoteBook?
- Как программно перевести DBgrid в реим редактирования и установить курсор в окошке редактирования в требуемую позицию?
- Я хочу создать в своей программе меню "а ля Дельфи 4". Как это сделать?
- Вставить Combobox в DBGrid
- На некоторых laptop компьютерах может не быть флоппи дисковода. Можно ли удалять из списка TDriveComboBox диски которые отключены?
- Где в Delphi обьявленны VK_Key для A-Z и 0-9?
Как уменьшить размер исполняемого файла программы? Писать на WinAPI без использования VCL. Это пригодно для и без того крохотных программ.
Воспользоваться пакетами (packages) из Delphi 3. Эффект появится, когда исполняемых файлов больше одного.
Воспользоваться компрессорами исполняемых файлов, например: Shrinker http://www.blinkinc.com, WWPack32 http://kolos.uni.lodz.pl/warezak, NeoLite ftp://ftp.zdnet.com/pub/private/sWlIB/utilities/other_utilities/neolitee.zip, Petite, http://www.icl.ndirect.co.uk/petite/.
-- Коментарий от Щербинина Евгения -- Про Aspack! Автор Alexy Solodnikov shareware до версии 1.7 нет ограничения по времени. адрес http://www.entechtaiwan.com/aspack.htm Сжимает лучше чем Shrinker (до 50%) Ошибок в нем похоже нет. (Пробовал) Проги грузятся куда быстрее. Правда в Инете была дискуссия о том, что все это от лукаваого и не нужно. Требуется память для распаковки. При укладке в Install Shield экономится уже куда меньше места (~10%), похоже Shield тоже знает о том где надавить на RCDATA.
Как заставить появляться хинт, когда я захочy ?
{Появление} IF h<>nil H.ReleaseHandle; {если чей-то хинт yже был, то его погасить} H:=THintWindow.Create(Окно-владелец хинта); H.ActivateHint(H.CalcHintRect(...),'hint hint nint'); .... {UnПоявление :) - это возможно пpидется повесить на таймеp, котоpый бyдет обнyляться пpи каждом новом появлении хинта} IF h<>nil H.ReleaseHandle;
По-дpyгомy задача тоже pешаема, но очень плохо. (см исходник объекта TApplication, он как pаз сабжами заведyет.
Как показать первый кадр AVI-файла? Пример:
procedure TForm1.Button1Click(Sender: TObject); begin Application.ProcessMessages; MediaPlayer1.Open; Application.ProcessMessages; MediaPlayer1.Step; Application.ProcessMessages; MediaPlayer1.Previous; end;
Источник: Дельфи. Вокруг да около.
Как заставить TEdit не 'пикать' при нажатии недопустимых клавиш? Перехватите событие KeyPress и установите key = #0 для недопустимых клавиш. Пример:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if ((UpCase(Key) < 'A') or (UpCase(Key) > 'Z')) then Key := #0; end;
Источник: Дельфи. Вокруг да около.
Функция keybd_event() принимает значения до 244 - как мне отправить нажатие клавиши с кодом #255 в элемент управления Windows? Это может понадобится для иностранных языков или для специальных символов. (например, в русских шрифтах символ с кодом #255 - я прописное). Приведенный в примере метод, не стоит использовать в случае если символ может быть передан обычным способом (функцией keybd_event()).
procedure TForm1.Button1Click(Sender: TObject); var KeyData : packed record RepeatCount : word; ScanCode : byte; Bits : byte; end; begin {Let the button repaint} Application.ProcessMessages; {Set the focus to the window} Edit1.SetFocus; {Send a right so the char is added to the end of the line} // SimulateKeyStroke(VK_RIGHT, 0); keybd_event(VK_RIGHT, 0,0,0); {Let the app get the message} Application.ProcessMessages; FillChar(KeyData, sizeof(KeyData), #0); KeyData.ScanCode := 255; KeyData.RepeatCount := 1; SendMessage(Edit1.Handle, WM_KEYDOWN, 255,LongInt(KeyData)); KeyData.Bits := KeyData.Bits or (1 shl 30); KeyData.Bits := KeyData.Bits or (1 shl 31); SendMessage(Edit1.Handle, WM_KEYUP, 255, LongInt(KeyData)); KeyData.Bits := KeyData.Bits and not (1 shl 30); KeyData.Bits := KeyData.Bits and not (1 shl 31); SendMessage(Edit1.Handle, WM_CHAR, 255, LongInt(KeyData)); Application.ProcessMessages; end;
Источник: Дельфи. Вокруг да около.
Как писать текст в StringGrid в стиле Exel (не обрезая, если он не помещается в ячейку)
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var i, x, y: Integer; begin if gdFixed in State then Exit; if ARow > 1 then Exit; {Draw row 1 with text from cell 1,1 spanning all cells in the row} with sender as TStringGrid do begin {Extend rect to include grid line on right, if not last cell in row} if aCol < Pred(ColCount) then Rect.Right := Rect.Right + GridlineWidth; {Figure out where the text of the first cell would start relative to the current cells rect} y := Rect.Top + 2; x := Rect.Left + 2; for i:= 1 to aCol - 1 do x := x - ColWidths[i] - GridlineWidth; {Paint cell pale yellow} Canvas.Brush.Color := $7FFFFF; Canvas.Brush.Style := bsSolid; Canvas.FillRect( Rect ); {Paint text of cell 1,1 clipped to current cell} Canvas.TextRect( Rect, x, y, Cells[1, 1] ); end; end;
procedure TForm1.FormCreate(Sender: TObject); var i, k: Integer; begin with StringGrid1 do begin cells[1, 1] := 'A rather long line which will span cells'; for i:= 1 to colcount-1 do for k:= 2 to rowcount -1 do cells[i,k] := Format( 'Cell[%d, %d]', [i, k]); end; end;
Как извлечь Red, Green, и Blue компонент из определенного цвета? Используйте функции Window API Get RValue(), GetGValue(), и GetBValue(). Пример:
procedure TForm1.Button1Click(Sender: TObject); begin Form1.Canvas.Pen.Color := clRed; Memo1.Lines.Add('Red := ' + IntToStr(GetRValue(Form1.Canvas.Pen.Color))); Memo1.Lines.Add('Red := ' + IntToStr(GetGValue(Form1.Canvas.Pen.Color))); Memo1.Lines.Add('Blue:= ' + IntToStr(GetBValue(Form1.Canvas.Pen.Color))); end;
Как отображать ComboBox в текущей позиции курсора TMemo
unit CBoxInMemo;
interface
uses Windows, Classes, Controls, Graphics, Forms, StdCtrls;
type TFrmCboxInMemo = class(TForm) Button1: TButton; Memo1: TMemo; Label1: TLabel; ComboBox1: TComboBox; procedure Button1Click(Sender: TObject); procedure ComboBox1Exit(Sender: TObject); procedure ComboBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var FrmCboxInMemo: TFrmCboxInMemo;
implementation
{$R *.DFM}
procedure TFrmCboxInMemo.Button1Click(Sender: TObject); var clientPos: TPoint; lineHeight: Integer; tmpFont: TFont; begin GetCaretPos(clientPos); {Use the following calculation of line height only if you want your combobox to appear below the char position you are referencing.} tmpFont := Canvas.Font; Canvas.Font := Memo1.Font; lineHeight := Canvas.TextHeight('Xy'); Canvas.Font := tmpFont; with ComboBox1 do begin {Adjustment of Top by lineHeight only necessary if combobox is to appear below line.} Top := clientPos.Y + Memo1.Top + lineHeight; Left := clientPos.X + Memo1.Left; Visible := true; SetFocus; end; end;
procedure TFrmCboxInMemo.ComboBox1Exit(Sender: TObject); begin ComboBox1.Visible := false; end;
procedure TFrmCboxInMemo.ComboBox1Click(Sender: TObject); begin ComboBox1.Visible := false; end;
end.
Как заставить TMediaPlayer проигрывать одно и тоже бесконечно? AVI например? В примере AVI файл проигрывается снова и снова - используем событие MediaPlayer'а Notify Пример:
procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin with MediaPlayer1 do if NotifyValue = nvSuccessful then begin Notify := True; Play; end; end;
Источник: Дельфи. Вокруг да около.
При показе максимизированное формы она перекрывает task bar и не выравнивается по верху экрана. В чем тут дело? Это может произойти когда свойство position формы установленно в poScreenCenter. Установите position = poDefault.
Как изменить шрифт hint'а? В примере перехватывается событие Application.OnShowHint и изменяется шрифт Hint'а. Пример:
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private {Private declarations} public procedure MyShowHint(var HintStr: string; var CanShow: Boolean;var HintInfo: THintInfo); {Public declarations} end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.MyShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo); var i : integer; begin for i := 0 to Application.ComponentCount - 1 do if Application.Components[i] is THintWindow then with THintWindow(Application.Components[i]).Canvas do begin Font.Name:= 'Arial'; Font.Size:= 18; Font.Style:= [fsBold]; HintInfo.HintColor:= clWhite; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin Application.OnShowHint := MyShowHint; end;
Источник: Дельфи. Вокруг да около.
Как в RichEdit или TMemo реализовать при нажатии Enter-а позиционирование курстора в позицию как в предыдущей строке
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; RichEdit1: TRichEdit; procedure RichEdit1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
uses richedit;
{$R *.DFM}
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char); var line, col, indent: integer; S: String; begin if key = #13 then begin key := #0; with sender as TRichEdit do begin {figure out line and column position of caret} line := PerForm( EM_EXLINEFROMCHAR, 0, SelStart ); Col := SelStart - Perform( EM_LINEINDEX, line, 0 ); {get part of current line in front of caret} S:= Copy( lines[ line ], 1, col ); {count blanks and tabs in this string} indent := 0; while (indent < length( S )) and (S[indent + 1] in [' ', #9]) do Inc( indent ); {insert a linebreak followed by the substring of blanks and tabs} SelText := #13#10 + Copy(S, 1, indent); end; end; end;
end.
Как сменить дисковод, откуда MediaPlayer проигрывает аудио CD? Пример:
MediaPlayer1.FileName := 'E:';
Я хочу вставить escape code в строку при использовании функции Format(). Например, я хочу создать строку, содержащую символ табуляции. В "C" я бы написал что-то вроде sprintf(buffer, "%s\t%s", str);. А как это будет на Pascal'e? Функция Format Pascal'я не использует escape codes. Вместо этого нужно вставить в строку действительное значение символа в кодировке ASCII. Пример:
Buffer := Format('%s'#9'%s', [Str1, Str2]); ShowMessage(Format('%s'#9'%s', ['Column1', 'Column2']));
Как запретить изменение размера моего компонента в design-time? Поместите в конструктор компонента код, устанавливающий размеры по умолчанию. Переопределите метод SetBounds и проверяйте в нем "componentstate". Если компонет находится режиме "design-time" (csDesigning in ComponentState) просто передавайте значения ширины и высоты (width и heights) компонента по умолчанию (в нашем примере 50) методу класса-предка.
Пример:
procedure TVu.SetBounds(ALeft : integer; ATop : integer; AWidth : integer; AHeight : integer); begin if csdesigning in componentstate then begin AWidth := 50; AHeight := 50; inherited; //вызываем унаследованный от предка метод end; end;
Источник: Дельфи. Вокруг да около.
Есть ли в Delphi эквивалент функции SendKeys Visual Basic'а? Ниже приведена процедура, позволяющаю отправлять нажатия в любой элемент управления (window control), способный принимать ввод с клавиатуры. Вы можете использовать эту технику чтобы включать клавиши NumLock, CapsLock и ScrollLock под Windows NT. Та же техника работает и под Windows 95 для CapsLock и ScrollLock но не работает для клавиши NumLock. Обратите внимание, что приведены четыре поцедуры: SimulateKeyDown() - эмулировать нажатие клавиши (без отпускания) SimulateKeyUp() - эмулировать отпускание клавиши SimulateKeystroke() - эмулировать удар по клавише (нажатие и отпускание) и SendKeys(), позволяющие Вам гибко контролировать посылаемые сообщения клавиатуры. SimulateKeyDown(), SimulateKeyUp() и SimulateKeystroke() получают коды виртуальных клавиш (virtural key) (вроде VK_F1). Процедура SimulateKeystroke() получает дополнительный параметр, полезный при эмуляции нажатия PrintScreen. Когда этот параметр равен нулю весь экран будет скопирован в буфер обмена (clipboard). Если дополнительный параметр равен 1 будет скопированно только активное окно. Четыре метода "button click" демонстрируют использование: ButtonClick1 - включает capslock ButtonClick2 - перехватывает весь экран в буфер обмена (clipboard). ButtonClick3 - перехватывает активное окно в буфер обмена (clipboard). ButtonClick4 - устанавливает фокус в Edit и отправляет в него строку. Пример:
procedure SimulateKeyDown(Key : byte); begin keybd_event(Key, 0, 0, 0); end;
procedure SimulateKeyUp(Key : byte); begin keybd_event(Key, 0, KEYEVENTF_KEYUP, 0); end;
procedure SimulateKeystroke(Key : byte; extra : DWORD); begin keybd_event(Key,extra,0,0); keybd_event(Key,extra,KEYEVENTF_KEYUP,0); end;
procedure SendKeys(s : string); var i : integer; flag : bool; w : word; begin {Get the state of the caps lock key} flag := not GetKeyState(VK_CAPITAL) and 1 = 0; {If the caps lock key is on then turn it off} if flag then SimulateKeystroke(VK_CAPITAL, 0); for i := 1 to Length(s) do begin w := VkKeyScan(s[i]); {If there is not an error in the key translation} if ((HiByte(w) <> $FF) and (LoByte(w) <> $FF)) then begin {If the key requires the shift key down - hold it down} if HiByte(w) and 1 = 1 then SimulateKeyDown(VK_SHIFT); {Send the VK_KEY} SimulateKeystroke(LoByte(w), 0); {If the key required the shift key down - release it} if HiByte(w) and 1 = 1 then SimulateKeyUp(VK_SHIFT); end; end; {if the caps lock key was on at start, turn it back on} if flag then SimulateKeystroke(VK_CAPITAL, 0); end;
procedure TForm1.Button1Click(Sender: TObject); begin {Toggle the cap lock} SimulateKeystroke(VK_CAPITAL, 0); end;
procedure TForm1.Button2Click(Sender: TObject); begin {Capture the entire screen to the clipboard} {by simulating pressing the PrintScreen key} SimulateKeystroke(VK_SNAPSHOT, 0); end;
procedure TForm1.Button3Click(Sender: TObject); begin {Capture the active window to the clipboard} {by simulating pressing the PrintScreen key} SimulateKeystroke(VK_SNAPSHOT, 1); end;
procedure TForm1.Button4Click(Sender: TObject); begin {Set the focus to a window (edit control) and send it a string} Application.ProcessMessages; Edit1.SetFocus; SendKeys('Delphi Is RAD!'); end;
Источник: Дельфи. Вокруг да около.
Как разместить прозрачную надпись на TBitmap? Пример:
procedure TForm1.Button1Click(Sender: TObject); var OldBkMode : integer; begin Image1.Picture.Bitmap.Canvas.Font.Color := clBlue; OldBkMode := SetBkMode(Image1.Picture.Bitmap.Canvas.Handle,TRANSPARENT); Image1.Picture.Bitmap.Canvas.TextOut(10, 10, 'Hello'); SetBkMode(Image1.Picture.Bitmap.Canvas.Handle,OldBkMode); end;
Источник: Дельфи. Вокруг да около.
При выполнении диалога FontDialog со свойством Device равным fdBoth or fdPrinter, появляется ошибка "There are no fonts installed". Эти установки должны показать шрифты совместимые либо с принтером либо с экраном. В примере диалог Windows ChooseFont вызывается напрямую чтобы показать список шрифтов, совместимых одновременно и с экраном и с принтером. Пример:
uses Printers, CommDlg;
procedure TForm1.Button1Click(Sender: TObject); var cf : TChooseFont; lf : TLogFont; tf : TFont; begin if PrintDialog1.Execute then begin GetObject(Form1.Canvas.Font.Handle, sizeof(lf),@lf); FillChar(cf, sizeof(cf), #0); cf.lStructSize := sizeof(cf); cf.hWndOwner := Form1.Handle; cf.hdc := Printer.Handle; cf.lpLogFont := @lf; cf.iPointSize := Form1.Canvas.Font.Size * 10; cf.Flags := CF_BOTH or CF_INITTOLOGFONTSTRUCT or CF_EFFECTS or CF_SCALABLEONLY or CF_WYSIWYG; cf.rgbColors := Form1.Canvas.Font.Color; if ChooseFont(cf) <> false then begin tf := TFont.Create; tf.Handle := CreateFontIndirect(lf); tf.COlor := cf.RgbColors; Form1.Canvas.Font.Assign(tf); tf.Free; Form1.Canvas.TextOut(10, 10, 'Test'); end; end; end;
Источник: Дельфи. Вокруг да около.
Как преобразовать цвета в строку - название цвета VCL? Модуль graphics.pas содержит функцию ColorToString() которое преобразует допустимое значение TColor в его строковое представление используя либо константу-название цвета (по возможности) либо шестнадцатиричную строку. Обратная функция - StringToColor() Пример:
procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add(ColorToString(clRed)); Memo1.Lines.Add(IntToStr(StringToColor('clRed'))); end;
Источник: Дельфи. Вокруг да около.
Как получить число и список всех компонентов, расположенных на TNoteBook? В примере список выводится на Listbox. Пример:
procedure TForm1.Button1Click(Sender: TObject); var n: integer; p: integer; begin ListBox1.Clear; with Notebook1 do begin for n := 0 to ControlCount - 1 do begin with TPage(Controls[n]) do begin ListBox1.Items.Add('Notebook Page: ' + TPage(Notebook1.Controls[n]).Caption); for p := 0 to ControlCount - 1 do ListBox1.Items.Add(Controls[p].Name); ListBox1.Items.Add(EmptyStr); end; end; end; end;
Источник: Дельфи. Вокруг да около.
Как программно перевести DBgrid в реим редактирования и установить курсор в окошке редактирования в требуемую позицию? Переведите таблицу в режим редактирования, затем получите дескриптор (handle) окна редактирования и перешлите ей сообщение EM_SETSEL. В качестве параметров вы должны переслать начальную позицию курсора, и конечную позицию, определяющую конец выделения текста цветом. В приведенном примере курсор помещается во вторую позицию, текст внутри ячейки не выделяется. Пример:
procedure TForm1.Button1Click(Sender: TObject); var h : THandle; begin Application.ProcessMessages; DbGrid1.SetFocus; DbGrid1.EditorMode := true; Application.ProcessMessages; h:= Windows.GetFocus; SendMessage(h, EM_SETSEL, 2, 2); end;
Источник: Дельфи. Вокруг да около.
Я хочу создать в своей программе меню "а ля Дельфи 4". Как это сделать? 1. Разместите на форме TControlBar. (закладка Additional) Установите Align = Client. 2. Разместите TToolBar (закладка Win32) внутри TControlBar. 3. Установите в True свойства Flat и ShowCaptions этого TToolBar. 4. Создайте на TToolBar столько TToolButtons сколько Вам нужно. (щелкнув по TToolBar правой кнопкой и выбрав NewButton) 5. Установите свойство Grouped = True для всех TToolButtons. Это позволит меню выпадать при перемещении курсора между главными пунктами меню (если меню уже показано). 6. Разместите на фоме TMainMenu и убедитесь, что оно *НЕ присоденено* как меню главной формы. (посмотрите свойство Menu формы). 7. Создайте все пункты меню (щелкнув по TMainMenu кнопкой и выбрав Menu Designer) 8. Для каждой TToolButton установите ее MenuItem равным соответсвующему пункту TMainMenu.
Источник: Дельфи. Вокруг да около.
Вставить Combobox в DBGrid »»» Dim (18.08.00 09:38) Подскажите как можно вставить выпадающий список в DBGrid, желательно по подробней.
Заранее благодарен Дмитрий.
»»» Gurin Sergey - asmad@tsure.ru (18.08.00 10:29) 1. Дважды щелкнуть на DBGrid 2. Добавить колонку 3. Указать поле которое будет показываться (свойство FieldName) 4. Заполнить список (свойство PickList)
»»» dim - eda@arhadm.net.ru (18.08.00 12:05) А можно в место заполнения списка подключить сразу таблицу?
»»» Mike Goblin - mgoblin@mail.ru (18.08.00 14:38) Да можно, Вам нужно в компоненте данных сделать Lookup поле. 1. Дважды щелкнуть мышкой на допустим TTable появится редактор полей 2. В редакторе полей правой кнопкой и New Field 3. Появится диалог в нем тип поля Lookup, настоить остальные св-ва (если надо подробнее про другие св-ва пишите).
»»» dim - eda@arhadm.net.ru (18.08.00 15:29) Если не затруднит, то от описания я бы не отказался
»»» Mike Golovanov - mgoblin@mail.ru (21.08.00 09:06) Итак, есть две таблицы, одна из них содержит ссылку (числовой ID) на вторую, где есть текствое описание чего-либо. Допустим - это таблица человек и его специальность. Наша цель - сделать так, чтобы при вводе/редактировании ФИО человека итд в DBGrid из выпадающего списка можно было выбрать специальность. Таблица человек --> Table1 Таблица специальности --> Table2 Путь решения - создание Lookup поля в Table1. Этапы 1. Вызываем редактор полей Table1, Click мышой 2. В редакторе полей правой кнопкой и New Field -> видим диалог 3. В диалоге Name --> Profession (или как Вы его обзовете) Type --> String Size --> длина наименования профессии в Table2 FieldType --> Lookup KeyFields --> имя числового поля Table1, в которое связывает нас с Table2 (например prof_id) Dataset --> откуда мы будем брать строки описания, т.е Table2 LookupKeys --> Ключевое поле Table2 ResultField --> наименование профессии из Table2 Жмем ОК Теперь в DBGrid для Table1 данное поле будет содержать выпадающий список с профессиями из Table2
»»» dim - eda@arhadm.net.ru (21.08.00 09:10) Спасибо за описание, но есть еще вопрос: Если нет к примеру такой професии, то как добавить новую через это же поле?
»»» Mike Goblin - mgoblin@mail.ru (21.08.00 13:02) проще всего добавить в Table2 новую запись
-= Из конференции сайта MASTERS OF DELPHI (http://delphi.mastak.com) =-
На некоторых laptop компьютерах может не быть флоппи дисковода. Можно ли удалять из списка TDriveComboBox диски которые отключены? В примере TDriveComboBox не показывает дисководы, которые не готовы. (not ready). Учтите что на многих компьютерах будет ощутимая задержка при поверке plug&play флоппи дисковода. Пример:
procedure TForm1.FormCreate(Sender: TObject); var i : integer; OldErrorMode : Word; OldDirectory : string; begin OldErrorMode := SetErrorMode(SEM_NOOPENFILEERRORBOX); GetDir(0, OldDirectory); i := 0; while i <= DriveComboBox1.Items.Count - 1 do begin {$I-} ChDir(DriveComboBox1.Items[i][1] + ':\'); {$I+} if IoResult <> 0 then DriveComboBox1.Items.Delete(i) else inc(i); end; ChDir(OldDirectory); SetErrorMode(OldErrorMode); end;
Источник: Дельфи. Вокруг да около.
Где в Delphi обьявленны VK_Key для A-Z и 0-9? Они не обьявлены в Delphi поскольку они просто могуть быть заменены буквами. VK_0 до VK_9 то же что и ASCII '0' до '9' ($30 - $39), VK_A до VK_Z то же что и ASCII 'A' до 'Z' ($41 - $5A).
|