Как сделать многострочную надпись на tbitbtn


Содержание

Как сделать многострочную надпись на tbitbtn?

Как разместить прозрачную надпись на 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;

Вопрос:

Можно ли обратиться к колонке или строке grid’а по заголовку?

В следующем примере приведены две функции: GetGridColumnByName() и GetGridRowByName(), которые возвращают колонку или строку, имеющую заданный заголовок (caption).

procedure TForm1.FormCreate(Sender: TObject); begin StringGr + IntToStr(Row)); end;

Вопрос:

Как использовать клавишу-акселератор в TTabsheets? Я добавляю клавишу-акселератор в заголовок каждого Tabsheet моего PageControl, но при попытке переключать страницы этой клавишей программа пикает и ничего не происходит.

Можно перехватить сообщение CM_DIALOGCHAR.

Вопрос:

При использованиии компонента TRegistry под NT пользователь с права доступа ниже чем «администратор» не может получить доступа к информации реестра в ключе HKEY_LOCAL_MACHINE. Как это обойти?

Проблема вызвана тем, что TRegistry всегда открывает реестр с параметром KEY_ALL_ACCESS (полный доступ), даже если необходим доступ KEY_READ (только чтение). Избежать этого можно используя функции API для работы с реестром (RegOpenKey и т.п.), или создать новый класс из компонента TRegestry, и изменить его так чтобы можно было задавать режим открытия реестра.

Вопрос:

Можно ли изменить число колонок и их ширину в компоненте TFileListBox?

В приведенном примере FileListBox приводится к типу TDirectoryListBox — таким образом можно добавиь дополнительные колонки.

with TDirectoryListBox(FileListBox1) do begin Columns := 2; SendMessage(Handle, LB_SETCOLUMNWIDTH, Canvas.TextWidth(‘WWWWWWWW.WWW’),0); end;

Вопрос:

Как настроить табуляцию в компоненте TMemo?

Пошлите в Memo сообщение EM_SETTABSTOPS. Например установим первую позицию табуляции на 20-й пиксел.

procedure TForm1.FormCreate(Sender: TObject); var DialogUnitsX : LongInt; PixelsX : LongInt; i : integer; TabArray : array[0..4] of integer; begin Memo1.WantTabs := true; DialogUnitsX := LoWord(GetDialogBaseUnits); PixelsX := 20; for i := 1 to 5 do begin TabArray[i — 1] :=((PixelsX * i ) * 4) div DialogUnitsX; end; SendMessage(Memo1.Handle, EM_SETTABSTOPS,5,LongInt(@TabArray)); Memo1.Refresh; end;

Вопрос:

Как перехватить нажатия функциональных клавиш и стрелок?

Проверяйте значение переменной key на равенство VK_RIGHT, VK_LEFT, VK_F1 и т.д. на событии KeyDown формы.

procedure TForm1.FormKeyDown( Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RIGHT then Form1.Caption := ‘Right’; if Key = VK_F1 then Form1.Caption := ‘F1’; end;

Вопрос:

При обработке события DrawCell компонента DrawGr >

Правильно укажите границы используемого канваса.

If (Row = 0) then begin DrawGr >

Вопрос:

При использовании BitBtn Caption(текст) и картинка(bitmap) из файла не видны одновременно. Почему?

Это может происходить если картинка слишком велика. Класс TBitBtn сначала рисует картинку, а затем выводит текст над, под, слева или справа от картинки (в завивимости от свойства Layout). Если размер картинки такой же как у всей кнопки для вывода текста просто не остается места. Если Вам нужно получить кнопку такого же размера как Ваша картинка и видеть при этом надпись на кнопке Вам придется выводить текст надписи непосредственно на канву картинки.

var bm : TBitmap; OldBkMode : integer; begin bm := TBitmap.Create; bm.W ); SetBkMode(bm.Canvas.Handle, OldBkMode); BitBtn1.Glyph.Assign(bm); end;

Вопрос:

Можно ли изменить вид текстового курсора (каретки) edit’а или другого элемента управления Windows?

Можно! В примере показано как создать два цветных «bitmap’а»: «улыбчивый» и «хмурый» и присвоить их курсору edit’а. Для этого нужно перехватить оконную процедуру edit’а. Чтобы сделать это заменим адрес оконной процедуры Edit’а нашим собственным, а старую оконную процедуру будем вызывать по необходимости. Пример показывает «улыбчивый» курсор при наборе текста и «хмурый» при забое клавишей backspace.

unit caret1; interface <$IFDEF WIN32>uses Windows, Messages, SysUtils, ); OldEditsWindowProc := Pointer(SetWindowLong(Edit1.Handle,GWL_WNDPROC, LongInt(@NewWindowProc))); end; procedure TForm1.FormDestroy(Sender: TObject); begin SetWindowLong(Edit1.Handle,GWL_WNDPROC, LongInt(OldEditsWindowProc)); CaretBm.Free; CaretBmBk.Free; end;

Вопрос:

При использовании модулей доступа к BDE (DbiTypes, DbiProcs, DbiErrs), любая попытка вызвать процедуру abort выдает ошибку при компиляции при вызове метода abort «Statement expected, but expression of type ‘Integer’ found». Я пытался найти DbiTypes.pas, DbiProcs.pas и DbiErrs.pas чтобы разобраться но не нашел этих файлов. Где расположены эти файлы и как обойти ошибку?

Модули DbiTypes, DbiProcs, DbiErrs это псевдонимы модуля «BDE», обьявлены в Projects->Options->Directories/Conditionals->Unit Aliases. Исходник модуля DBE находится в каталоге «doc» и называется «BDE.INT». В этом файле обьявленна константа ABORT со значением -2. Так как Вы хотите использовать процедуру Abort(), которая обьявлена в модуле SysUtils, Вам нужно добавить префикс SysUtils перед вызовом процедуры Abort.


Вопрос:

Почему при изменении цвета букв StatusBar’а ничего не происходит?

Status bar — стандартный элемент управления Windows, и соответственно цвет его букв — значение clBtnText которое изменяется с помощью настроек в Control Panel. Этот цвет черный по умолчанию и может изменяться в зависимости от выбранной цветовой схемы. Другие стандартные элемент управления Windows, например кнопки, также имеют цвет букв, настраиваемый из ControlPanel. StatusBar и его панели имеют свойство «owner-draw», позволяющее Вам использовать любой цвет букв.

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); begin if Panel = StatusBar.Panels[0] then begin StatusBar.Canvas.Font.Color := clRed; StatusBar.Canvas.TextOut(Rect.Left, Rect.Top, ‘Panel — 0’) end else begin StatusBar.Canvas.Font.Color := clGreen; StatusBar.Canvas.TextOut(Rect.Left, Rect.Top, ‘Panel — 1’); end; end;

Вопрос:

Как сделать многострочную надпись на TBitBtn?

Выводите текст надписи непосредственно на «glyph» TBitBtn’а. См. пример.

procedure TForm1.FormCreate(Sender: TObject); var R : TRect; N : Integer; Buff : array[0..255] of Char; begin with BitBtn1 do begin Caption := ‘A really really long caption’; Glyph.Canvas.Font := Self.Font; Glyph.W ; DrawText(Glyph.Canvas.Handle,Buff,StrLen(Buff),R, DT_CENTER or DT_WORDBREAK or DT_CALCRECT); OffsetRect(R,(Glyph.Width — R.Right) div 2, (Glyph.Height — R.Bottom) div 2); DrawText(Glyph.Canvas.Handle,Buff,StrLen(Buff),R, DT_CENTER or DT_WORDBREAK); end; end;

Вопрос:

Как изменить стиль шрифта RichEdit нажатиями соответствующих комбинаций клавиш? (например включить курсив по нажатию Ctrl + I)

В примере стили шрифта меняются по нажатию след. комбинаций клавиш Ctrl + B — вкл/выкл жирного шрифта Ctrl + I — вкл/выкл наклонного шрифта Ctrl + S — вкл/выкл зачеркнутого шрифта Ctrl + U — вкл/выкл подчеркнутого шрифта

const KEY_CTRL_B = 02; KEY_CTRL_I = 9; KEY_CTRL_S = 19; KEY_CTRL_U = 21; procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char); begin case Ord(Key) of KEY_CTRL_B: begin Key := #0; if fsBold in (Sender as TRichEdit).SelAttributes.Style then (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style — [fsBold] else (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style + [fsBold]; end; KEY_CTRL_I: begin Key := #0; if fsItalic in (Sender as TRichEdit).SelAttributes.Style then (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style — [fsItalic] else (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style + [fsItalic]; end; KEY_CTRL_S: begin Key := #0; if fsStrikeout in (Sender as TRichEdit).SelAttributes.Style then (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style-[fsStrikeout] else (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style+[fsStrikeout]; end; KEY_CTRL_U: begin Key := #0; if fsUnderline in (Sender as TRichEdit).SelAttributes.Style then (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style-[fsUnderline] else (Sender as TRichEdit).SelAttributes.Style := (Sender as TRichEdit).SelAttributes.Style+[fsUnderline]; end; end; end;

Вопрос:

В документации компонента TRegIniFile говорится, что можно изменять корневой ключ (root key). Я пытаюсь это сделать но ничего не получается.

uses Registry; procedure TForm1.Button1Click(Sender: TObject); var WinIni : TRegIniFile; begin WinIni := TRegIniFile.Create(»); WinIni.RootKey := HKEY_LOCAL_MACHINE; WinIni.WriteString(‘Frank’,’Borland’,’Writes Fast Code!’); WinIni.Free; end;

Вопрос:

Можно ли динамически изменять свойство «owner» компонента во время выполнения программы?

Вы можете менять свойство «owner» и после создания компонента с помощью методов InsertComponent() и RemoveComponent().

Вопрос:

Как очистить содержимое Canvas’а?

Просто нарисуйте прямоугольник любого цвета.

Canvas.Brush.Color := ClWhite; Canvas.FillRect(Canvas.ClipRect);

Вопрос:

Можно ли динамически менять какая форма считается главной в приложении во время работы программы?

Можно, но только во время загрузки приложения. Чтобы сделать это выберите «View->Project Source» и измените код инициализации приложения, так что порядок создания форм зависил от какого-то условия.

Вам придется редактировать этот код, если Вы добавите в приложение новые формы.

begin Application.Initialize; if then begin Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); end else begin Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm1, Form1); end; end. Application.Run;

Вопрос:

Как программно «щелкнуть» по компоненту speed button? Я пытался использовать SendMessage но у Speedbuttons нет «handle».

В примере используется метод Perform класса TControl для отправки сообщения.

procedure TForm1.SpeedButton1Click(Sender: TObject); begin ShowMessage(‘clicked’); end; procedure TForm1.Button1Click(Sender: TObject); begin SpeedButton1.Perform(WM_LBUTTONDOWN, 0, 0); SpeedButton1.Perform(WM_LBUTTONUP, 0, 0); end;

Вопрос:

Можно ли отключить определенный элемент в RadioGroup?

В примере показано как получить доступ к отдельным элементам компонента TRadioGroup.

procedure TForm1.Button1Click(Sender: TObject); begin TRadioButton(RadioGroup1.Controls[1]). Enabled := False; end;

Вопрос:

Почему методы рисования Delphi (например MoveTo и LineTo) рисуют на один пиксел короче?

Так работает большинство графических систем, включая Windows. Библиотека VCL просто передает вызовы в функции GDI. Если Вы хотите нарисовать линию с последним пикселом включительно просто добавте единицу к координатам.

Вопрос:

Как показать подсказки «hints» для элементов меню?


В примере создается обработчик события Application.Hint — подсказки меню изображаются на status panel.

type TForm1 = ; Application.OnHint := HintHandler; end; procedure TForm1.HintHandler(Sender: TObject); begin Panel1.Caption := Application.Hint; end; procedure TForm1.MenuItemCloseClick(Sender: TObject); begin Application.Terminate; end; procedure TForm1.MenuItemOpenClick(Sender: TObject); begin if OpenDialog1.Execute then Form1.Caption := OpenDialog1.FileName; end;

Вопрос:

Как опеделить состояние списка ComboBox, выпал/скрыт?

Пошлите ComboBox сообщение CB_GETDROPPEDSTATE.

if SendMessage(ComboBox1.Handle, CB_GETDROPPEDSTATE,0,0) = 1 then begin <список ComboBox выпал>end;

Вопрос:

Как удалить каталог вместе со всеми содержащимися в нем файлами?

В примере стираются все файлы в каталоге и сам каталог. Чтобы удалить файл, помечанные только для чтения (read only) и занятые другими программами в момент удаления — напишите дополнительную процедуру.

procedure TForm1.Button1Click(Sender: TObject); var DirInfo: TSearchRec; r: integer; begin r := FindFirst(‘C:\Download\*.*’, FaAnyfile, DirInfo); while r = 0 do begin if ((DirInfo.Attr and FaDirectory <> FaDirectory) and (DirInfo.Attr and FaVolumeId <> FaVolume ); end;

Вопрос:

Как отключить системное меню формы и кнопки Minimize, Maximize, and Close во время выполнения(Runtime)?

В приведенном примере показано как это сделать

procedure TForm1.Button1Click(Sender: TObject); begin Form1.BorderIcons := Form1.BorderIcons — [biSystemMenu, biMinimize, biMaximize]; end; procedure TForm1.Button2Click(Sender: TObject); begin Form1.BorderIcons := Form1.BorderIcons + [biSystemMenu, biMinimize, biMaximize]; end;

Илон Маск рекомендует:  Iis о специальных сообщениях об ошибках

Вопрос:

Как извлечь 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;

Вопрос:

Как определить номер текущей строки в TMemo?

Чтобы определить номер текущей строки любого объекта управления edit — пошлите ей сообщение EM_LINEFROMCHAR

procedure TForm1.Button1Click(Sender: TObject); var LineNumber : integer; begin LineNumber := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, word(-1), 0); ShowMessage(IntToStr(LineNumber)); end;

Вопрос:

Как проигрываеть MPEG файл в Delphi-программе?

Если в системе Windows MMSystem установлен декодер MPEG — используя компонент TMediaPlayer

procedure TForm1.Button1Click(Sender: TObject); begin MediaPlayer1.Filename := ‘C:\DownLoad\rsgrow.mpg’; MediaPlayer1.Open; MediaPlayer1.Display := Panel1; MediaPlayer1.DisplayRect := Panel1.ClientRect; MediaPlayer1.Play; end;

Вопрос:

Как использовать анимированный курсор?

Во первых необходимо получит handle курсора, а затем определить его в массиве курсоров компонента TScreen. Индексы предопределенных курсоров системы отрицательны, пользователь может определить курсор, индекс которого положителен.

procedure TForm1.Button1Click(Sender: TObject); var h : THandle; begin h := LoadImage(0, ‘C:\TheWall\Magic.ani’, IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE); if h = 0 then ShowMessage(‘Cursor not loaded’) else begin Screen.Cursors[1] := h; Form1.Cursor := 1; end; end;

Вопрос:

Как узнать о нажатии «non-menu» клавиши в момент когда меню показано?

Создайте обработчик сообщения WM_MENUCHAR.

unit Unit1; interface uses Windows, Messages, SysUtils, ; m.Result := 1; end; end.

Вопрос:

Как определить наличие сопроцессора?

В отличие от общепринятого мнения не всее клоны 486/586/686/ и Pentium имеют сопроцессор для вычислений с плавающей запятой. В примере определяется наличие сопроцессора и под Win16 и под Win32.

<$IFDEF WIN32>uses Registry; <$ENDIF>function HasCoProcesser : bool; <$IFDEF WIN32>var TheKey : hKey; <$ENDIF>begin Result := true; <$IFNDEF WIN32>if GetWinFlags and Wf_80x87 = 0 then Result := false; <$ELSE>if RegOpenKeyEx(HKEY_LOCAL_MACHINE, ‘HARDWARE\DESCRIPTION\System\FloatingPointProcessor’,0, KEY_EXECUTE, TheKey) <> ERROR_SUCCESS then result := false; RegCloseKey(TheKey); <$ENDIF>end; procedure TForm1.Button1Click(Sender: TObject); begin if HasCoProcesser then ShowMessage(‘Has CoProcessor’) else ShowMessage(‘No CoProcessor — Windows Emulation Mode’); end;

Вопрос:

Как узнать серийный номер аудио CD?


CD может иметь или не иметь серийный номер и/или универсальный код продукта (Universal Product Code). MCI-расширение Windows предоставляет эту информации с помощью комманды MCI_INFO_MEDIA_IDENTITY command. Эта команда возвращает уникальную ID-строку.

uses MMSystem, MPlayer; procedure TForm1.Button1Click(Sender: TObject); var mp : TMediaPlayer; msp : TMCI_INFO_PARMS; MediaString : array[0..255] of char; ret : longint; begin mp := TMediaPlayer.Create(nil); mp.Visible := false; mp.Parent := Application.MainForm; mp.Shareable := true; mp.DeviceType := dtCDAudio; mp.FileName := ‘D:’; mp.Open; Application.ProcessMessages; FillChar(MediaString, sizeof(MediaString), #0); FillChar(msp, sizeof(msp), #0); msp.lpstrReturn := @MediaString; msp.dwRetSize := 255; ret := mciSendCommand(Mp.DeviceId, MCI_INFO, MCI_INFO_MEDIA_IDENTITY, longint(@msp)); if Ret <> 0 then begin MciGetErrorString(ret, @MediaString, sizeof(MediaString)); Memo1.Lines.Add(StrPas(MediaString)); end else Memo1.Lines.Add(StrPas(MediaString)); mp.Close; Application.ProcessMessages; mp.free; end; end.

Вопрос:

Как вывести на элемент управления (Window control) текст, содержащий амперсанд — & ?

Используя два амперсанда подряд. Windows интерпритирует одиночный амперсанд как указание на то, что следующий символ — горячая клавиша (и поддчеркивает следующий символ вместо излбражения аперсанда).

Вопрос:

Как поместить bitmap в Metafile?

procedure TForm1.Button1Click(Sender: TObject); var m : TmetaFile; mc : TmetaFileCanvas; b : tbitmap; begin m := TMetaFile.Create; b := TBitmap.create; b.LoadFromFile(‘C:\SomePath\SomeBitmap.BMP’); m.Height := b.Height; m.W ); end;

Вопрос:

Как узнать, что курсор мыши над моей формой?

Можно использовать функцию GetCapture() из Windows API.

Cм. документацию Windows для информации об ограничениях функции GetCapture.

procedure TForm1.FormDeactivate(Sender: TObject); begin ReleaseCapture; end; procedure TForm1.FormMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer); begin If GetCapture = 0 then SetCapture(Form1.Handle); if PtInRect(Rect(Form1.Left,Form1.Top,Form1.Left + Form1.W ; end;

Вопрос:

Как программно определить, что приложение работает под Windows NT?

function IsNT : bool; var osv : TOSVERSIONINFO; begin result := true; GetVersionEx(osv); if osv.dwPlatform ); end;

Вопрос:

Как создать bitmap из пиктогрммы (icon)?

Используя Bitmap.Canvas.Draw нарисуйте пиктограмму на Bitmap’е.

procedure TForm1.Button1Click(Sender: TObject); var TheIcon : TIcon; TheBitmap : TBitmap; begin TheIcon := TIcon.Create; TheIcon.LoadFromFile(‘C:\Program Files\Borland\IcoCur32\EARTH.ICO’); TheBitmap := TBitmap.Create; TheBitmap.Height := TheIcon.Height; TheBitmap.W >

Вопрос:

Как создать отдельную подсказку (hint) для каждой ячейки StringGrid?

В приведенном примере отслеживается движение курсора мыши — при перемещении между ячейками StringGrid’а — появляется окно подсказки(hint), показываеющее номер текущей строки и колонки.

type TForm1 = ; StringGr > r) or(Col <> c)) then begin Row := r; Col := c; Application.CancelHint; StringGr >

Вопрос:

Как внести изменения в код VCL?

Примечание: внесение изменений в VCL не поддерживается Borland или Borland Developer Support.
-Но если Вы решили сделать это.
Изменеия в код VCL никогда не должны вносится в секцию «interface» модуля — только в секцию «implimentation». Наиболее безопасный способ внести изменения в VCL — создать новый каталог названный «исправленный VCL». Скопируйте файл VCL который Вы хотите изменить в этот каталог. Внесите изменения (лучше прокомментировать их) в этот файл. Затем добавьте путь к Вашему каталогу «исправленный VCL» в самое начало «library path». Перезапустите Delphi/C++ Builder и перекомпилируйте Ваш проект. «library path» можно изменить в меню:
Delphi 1 : Options | Environment | Library
Delphi 2 : Tools | Options | Library
Delphi 3 : Tools | Environment Options | Library
Delphi 4 : Tools | Environment Options | Library
C++ Builder : Options | Environment | Library

Вопрос:

Как в Delphi реализовать функцию — эквивалент TwipsPerPixel из Visual Basic?

Функции TwipsPerPixelX и TwipsPerPixelY, приведенные в примере реализуют ту же функциональность в Delphi.

Как сделать многострочную надпись на tbitbtn?

Компонент Delphi BitBtn это пиктографическая кнопка, представляющая собой один из вариантов стандартной кнопки Button. В отличие от последней кнопка Delphi BitBtn умеет отображать на своей поверхности не только надпись, но и изображение, которое задаётся свойством Glyph. В состав Delphi входит большое количество готовых изображений, которые можно размещать на кнопках Delphi BitBtn. В стандартном случае они располагаются по адресу C:\Program Files\Common Files\Borland Shared\Images\Buttons .

Свойство Kind компонента Delphi BitBtn определяет один из стандартных вариантов кнопки BitBtn:

Нажатие на любую из них (кроме кнопок со свойством BitBtn.Kind, равным bkCustom или bkHelp) приводит к закрытию модального окна, в котором она установлена, а результат, возвращаемый в программу равен mrName (Name — Yes, Abort, Cancel и т.д. — название кнопки). Отличие есть у кнопки Close, её нажатие (после закрытия модального окна) приводит к возвращению не mrClose а mrCancel, а для главное окно программы просто закрывается, поэтому работа программы сразу завершается.
В случае если пиктограмма Glyph у кнопки Delphi BitBtn была изменена, система Delphi автоматически изменит и её значение BitBtn.Kind, которое станет равным bkCustom

Специфические свойства компонента — пиктографической кнопки Delphi BitBtn перечислены в таблице:

500+ FAQ по Delphi

Перейти на: Главную | Индексную | Предыдущую | Следующую страницу

надувные кровати
Можно ли изменить число колонок и их ширину в компоненте TFileListBox?

В приведенном примере FileListBox приводится к типу TDirectoryListBox — таким образом можно добавиь дополнительные колонки.
Пример:
with TDirectoryListBox(FileListBox1) do
begin
Columns := 2;
SendMessage(Handle, LB_SETCOLUMNWIDTH, Canvas.TextWidth(‘WWWWWWWW.WWW’),0);
end;
Как настроить табуляцию в компоненте TMemo?

Пошлите в Memo сообщение EM_SETTABSTOPS. Например установим первую позицию табуляции на 20-й пиксел.
Пример:
procedure TForm1.FormCreate(Sender: TObject);
var
DialogUnitsX : LongInt;
PixelsX : LongInt;
i : integer;
TabArray : array[0..4] of integer;
begin
Memo1.WantTabs := true;
DialogUnitsX := LoWord(GetDialogBaseUnits);
PixelsX := 20;
for i := 1 to 5 do
begin
TabArray[i — 1] :=((PixelsX * i ) * 4) div DialogUnitsX;
end;
SendMessage(Memo1.Handle,
EM_SETTABSTOPS,5,LongInt(@TabArray));
Memo1.Refresh;
end;
Как перехватить нажатия функциональных клавиш и стрелок?

Проверяйте значение переменной key на равенство VK_RIGHT, VK_LEFT, VK_F1 и т.д. на событии KeyDown формы.
Пример:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_RIGHT then
Form1.Caption := ‘Right’;
if Key = VK_F1 then
Form1.Caption := ‘F1’;
end;
При обработке события DrawCell компонента DrawGr >
Правильно укажите границы используемого канваса.
Пример:
If (Row = 0) then
begin
DrawGr > DrawGrid1.Canvas.TextOut(Rect.Left,Rect.Top, IntToStr(Col));
end;
При использовании BitBtn Caption(текст) и картинка(bitmap) из файла не видны одновременно. Почему?


Это может происходить если картинка слишком велика. Класс TBitBtn сначала рисует картинку, а затем выводит текст над, под, слева или справа от картинки (в завивимости от свойства Layout). Если размер картинки такой же как у всей кнопки для вывода текста просто не остается места. Если Вам нужно получить кнопку такого же размера как Ваша картинка и видеть при этом надпись на кнопке Вам придется выводить текст надписи непосредственно на канву картинки.
Пример:
var
bm : TBitmap;
OldBkMode : integer;
begin
bm := TBitmap.Create;
bm.W > bm.Height := BitBtn1.Glyph.Height;
bm.Canvas.Draw(0, 0, BitBtn1.Glyph);
OldBkMode := SetBkMode(bm.Canvas.Handle, Transparent);
bm.Canvas.TextOut(0, 0, ‘The Caption’);
SetBkMode(bm.Canvas.Handle, OldBkMode);
BitBtn1.Glyph.Assign(bm);
end;
Можно ли изменить вид текстового курсора (каретки) edit’а или другого элемента управления Windows?

Можно! В примере показано как создать два цветных «bitmap’а»: «улыбчивый» и «хмурый» и присвоить их курсору edit’а. Для этого нужно перехватить оконную процедуру edit’а. Чтобы сделать это заменим адрес оконной процедуры Edit’а нашим собственным, а старую оконную процедуру будем вызывать по необходимости. Пример показывает «улыбчивый» курсор при наборе текста и «хмурый» при забое клавишей backspace.
Пример:

<$IFDEF WIN32>
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
<$ELSE>
uses
WinTypes, WinProcs, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private

public

CaretBm : TBitmap;
CaretBmBk : TBitmap;
OldEditsWindowProc : Pointer;
end;

var
Form1: TForm1;

type
<$IFDEF WIN32>
WParameter = LongInt;
<$ELSE>
WParameter = Word;
<$ENDIF>
LParameter = LongInt;


function NewWindowProc(WindowHandle : hWnd; TheMessage : WParameter; ParamW : WParameter;
ParamL : LParameter) : LongInt
<$IFDEF WIN32>stdcall; <$ELSE>; export; <$ENDIF>
begin

NewWindowProc := CallWindowProc(Form1.OldEditsWindowProc, WindowHandle,
TheMessage, ParamW, ParamL);
if TheMessage = WM_SETFOCUS then
begin
CreateCaret(WindowHandle, Form1.CaretBm.Handle, 0, 0);
ShowCaret(WindowHandle);
end;
if TheMessage = WM_KILLFOCUS then
begin
HideCaret(WindowHandle);
DestroyCaret;
end;
if TheMessage = WM_KEYDOWN then
begin
if ParamW = VK_BACK then
CreateCaret(WindowHandle, Form1.CaretBmBk.Handle, 0, 0)
else
CreateCaret(WindowHandle, Form1.CaretBm.Handle, 0, 0);
ShowCaret(WindowHandle);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

CaretBm := TBitmap.Create;
CaretBm.Canvas.Font.Name := ‘WingDings’;
CaretBm.Canvas.Font.Height := Edit1.Font.Height;
CaretBm.Canvas.Font.Color := clWhite;
CaretBm.W ) + 2;
CaretBm.Height := CaretBm.Canvas.TextHeight(‘J’) + 2;
CaretBm.Canvas.Brush.Color := clBlue;
CaretBm.Canvas.FillRect(Rect(0, 0, CaretBm.Width, CaretBm.Height));
CaretBm.Canvas.TextOut(1, 1, ‘J’);

CaretBmBk := TBitmap.Create;
CaretBmBk.Canvas.Font.Name := ‘WingDings’;
CaretBmBk.Canvas.Font.Height := Edit1.Font.Height;
CaretBmBk.Canvas.Font.Color := clWhite;
CaretBmBk.W ) + 2;
CaretBmBk.Height := CaretBmBk.Canvas.TextHeight(‘L’) + 2;
CaretBmBk.Canvas.Brush.Color := clBlue;
CaretBmBk.Canvas.FillRect(Rect(0,0, CaretBmBk.Width, CaretBmBk.Height));
CaretBmBk.Canvas.TextOut(1, 1, ‘L’);

OldEditsWindowProc := Pointer(SetWindowLong(Edit1.Handle,GWL_WNDPROC,
LongInt(@NewWindowProc)));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin

SetWindowLong(Edit1.Handle,GWL_WNDPROC, LongInt(OldEditsWindowProc));
CaretBm.Free;
CaretBmBk.Free;
end;
Почему при изменении цвета букв StatusBar’а ничего не происходит?

Status bar — стандартный элемент управления Windows, и соответственно цвет его букв — значение
clBtnText которое изменяется с помощью настроек в Control Panel. Этот цвет черный по умолчанию и
может изменяться в зависимости от выбранной цветовой схемы. Другие стандартные элемент управления Windows,
например кнопки, также имеют цвет букв, настраиваемый из ControlPanel. StatusBar и его панели имеют
свойство «owner-draw», позволяющее Вам использовать любой цвет букв.
Пример:

Илон Маск рекомендует:  WideString - Тип Delphi

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
if Panel = StatusBar.Panels[0] then
begin
StatusBar.Canvas.Font.Color := clRed;
StatusBar.Canvas.TextOut(Rect.Left, Rect.Top, ‘Panel — 0’)
end
else
begin
StatusBar.Canvas.Font.Color := clGreen;
StatusBar.Canvas.TextOut(Rect.Left, Rect.Top, ‘Panel — 1’);
end;
end;
Как сделать многострочную надпись на TBitBtn?

Выводите текст надписи непосредственно на «glyph» TBitBtn’а. См. пример.
Пример:
procedure TForm1.FormCreate(Sender: TObject);
var
R : TRect;
N : Integer;
Buff : array[0..255] of Char;
begin
with BitBtn1 do
begin
Caption := ‘A really really long caption’;
Glyph.Canvas.Font := Self.Font;
Glyph.W > Glyph.Height := Height — 6;
R := Bounds(0, 0, Glyph.Width, 0);
StrPCopy(Buff, Caption);
Caption := »;
DrawText(Glyph.Canvas.Handle,Buff,StrLen(Buff),R,
DT_CENTER or DT_WORDBREAK or DT_CALCRECT);
OffsetRect(R,(Glyph.Width — R.Right) div 2,
(Glyph.Height — R.Bottom) div 2);
DrawText(Glyph.Canvas.Handle,Buff,StrLen(Buff),R,
DT_CENTER or DT_WORDBREAK);
end;
end;
Как изменить стиль шрифта RichEdit нажатиями соответствующих комбинаций клавиш? (например включить курсив по нажатию Ctrl + I)

В примере стили шрифта меняются по нажатию след. комбинаций клавиш
Ctrl + B — вкл/выкл жирного шрифта
Ctrl + I — вкл/выкл наклонного шрифта
Ctrl + S — вкл/выкл зачеркнутого шрифта
Ctrl + U — вкл/выкл подчеркнутого шрифта
Пример:
const
KEY_CTRL_B = 02;
KEY_CTRL_I = 9;
KEY_CTRL_S = 19;
KEY_CTRL_U = 21;

procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
case Ord(Key) of
KEY_CTRL_B:
begin
Key := #0;
if fsBold in (Sender as TRichEdit).SelAttributes.Style then
(Sender as TRichEdit).SelAttributes.Style :=
(Sender as TRichEdit).SelAttributes.Style — [fsBold]
else
(Sender as TRichEdit).SelAttributes.Style :=
(Sender as TRichEdit).SelAttributes.Style + [fsBold];
end;
KEY_CTRL_I:
begin
Key := #0;
if fsItalic in (Sender as TRichEdit).SelAttributes.Style then
(Sender as TRichEdit).SelAttributes.Style :=
(Sender as TRichEdit).SelAttributes.Style — [fsItalic]
else
(Sender as TRichEdit).SelAttributes.Style :=
(Sender as TRichEdit).SelAttributes.Style + [fsItalic];
end;
KEY_CTRL_S:
begin
Key := #0;
if fsStrikeout in (Sender as TRichEdit).SelAttributes.Style then
(Sender as TRichEdit).SelAttributes.Style :=
(Sender as TRichEdit).SelAttributes.Style-[fsStrikeout]
else
(Sender as TRichEdit).SelAttributes.Style :=
(Sender as TRichEdit).SelAttributes.Style+[fsStrikeout];
end;
KEY_CTRL_U:
begin
Key := #0;
if fsUnderline in (Sender as TRichEdit).SelAttributes.Style then
(Sender as TRichEdit).SelAttributes.Style :=
(Sender as TRichEdit).SelAttributes.Style-[fsUnderline]
else
(Sender as TRichEdit).SelAttributes.Style :=
(Sender as TRichEdit).SelAttributes.Style+[fsUnderline];
end;
end;
end;
В документации компонента TRegIniFile говорится, что можно изменять корневой ключ (root key). Я пытаюсь это сделать но ничего не получается.

См. пример.
Пример:
uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
WinIni : TRegIniFile;
begin
WinIni := TRegIniFile.Create(»);
WinIni.RootKey := HKEY_LOCAL_MACHINE;
WinIni.WriteString(‘Frank’,’Borland’,’Writes Fast Code!’);
WinIni.Free;
end;
Можно ли динамически изменять свойство «owner» компонента во время выполнения программы?

Вы можете менять свойство «owner» и после создания компонента с помощью методов InsertComponent() и RemoveComponent(). @G
Как очистить содержимое Canvas’а?
Просто нарисуйте прямоугольник любого цвета.
Пример:
Canvas.Brush.Color := ClWhite;
Canvas.FillRect(Canvas.ClipRect);
Можно ли динамически менять какая форма считается главной в приложении во время работы программы? Можно, но только во время загрузки приложения. Чтобы сделать это выберите «View->Project Source» и измените код инициализации приложения, так что порядок создания форм зависил от какого-то условия.

Примечание: Вам придется редактировать этот код, если Вы добавите в приложение новые формы.

begin
Application.Initialize;
if then
begin
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
end
else
begin
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
end;
end.
Application.Run;
Как программно «щелкнуть» по компоненту speed button? Я пытался использовать SendMessage но у Speedbuttons нет «handle».

В примере используется метод Perform класса TControl для отправки сообщения.
Пример:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ShowMessage(‘clicked’);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SpeedButton1.Perform(WM_LBUTTONDOWN, 0, 0);
SpeedButton1.Perform(WM_LBUTTONUP, 0, 0);
end;
Можно ли отключить определенный элемент в RadioGroup?

В примере показано как получить доступ к отдельным элементам компонента TRadioGroup.
Пример:
procedure TForm1.Button1Click(Sender: TObject);
begin
TRadioButton(RadioGroup1.Controls[1]). Enabled := False;
end;
Почему методы рисования Delphi (например MoveTo и LineTo) рисуют на один пиксел короче?

Так работает большинство графических систем, включая Windows. Библиотека VCL просто передает вызовы в функции GDI. Если Вы хотите нарисовать линию с последним пикселом включительно просто добавте единицу к координатам.
Как показать подсказки «hints» для элементов меню?

В примере создается обработчик события Application.Hint — подсказки меню изображаются
на status panel.

type
TForm1 = class(TForm)
Panel1: TPanel;
MainMenu1: TMainMenu;
MenuItemFile: TMenuItem;
MenuItemOpen: TMenuItem;
MenuItemClose: TMenuItem;
OpenDialog1: TOpenDialog;
procedure FormCreate(Sender: TObject);
procedure MenuItemCloseClick(Sender: TObject);
procedure MenuItemOpenClick(Sender: TObject);
private

procedure HintHandler(Sender: TObject);
public

end;

var
Form1: TForm1;

procedure TForm1.FormCreate(Sender: TObject);
begin
Panel1.Align := alBottom;
MenuItemFile.Hint := ‘File Menu’;
MenuItemOpen.Hint := ‘Opens A File’;
MenuItemClose.Hint := ‘Closes the Application’;
Application.OnHint := HintHandler;
end;

procedure TForm1.HintHandler(Sender: TObject);
begin
Panel1.Caption := Application.Hint;
end;

procedure TForm1.MenuItemCloseClick(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.MenuItemOpenClick(Sender: TObject);
begin
if OpenDialog1.Execute then
Form1.Caption := OpenDialog1.FileName;
end;

BitBtn

Компонент delphi BitBtn по сути является компонентом Button, но на нем можно размещать битовый рисунок вместе с текстом этой кнопки. При размещении компонента BitBtn на форме и загрузки в него изображения он принимает следующий вид показанный на рисунке 1.

Для загрузки такого изображения удобно использовать встроенный редактор Picture editor, открыть который можно в свойстве Glyph нажатием на кнопку с тремя точками. В открывшемся редакторе с помощью кнопки Load можно загрузить изображение формата .bmp.

Рисунок может содержать в себе до трех разных изображений. Какое изображение выведется на кнопку, зависит от следующих факторов:

  1. изображение будет отображаться когда кнопка не нажата;
  2. изображение будет отображается когда кнопка неактивна т.е. свойство Enabled равно False;
  3. изображение будет отображается при нажатой кнопка (выполнен щелчок).

Для того что бы сделать такое изображение необходимо найти 3 подходящих квадратных рисунка например размером 20х20 и с помощью встроенного редактора изображений в ОС Windows — Paint’а (или другого редактора изображений) разместить их на одном полотне размером 60х20 по порядку, затем сохраняем это изображение в формате bmp и загружаем в нашу кнопку.

Урок 4. Компоненты TBitBtn, TEdit и TMemo

В предыдущем уроке рассказывалось о компоненте Lazarus TImage (Изображение), который используется для вывода на форму графического рисунка.


В этом уроке Вы познакомитесь с компонентами TBitBtn, TEdit и TMemo.

Компонент TBitBtn (Кнопка с пиктограммой) находится на вкладке Addition, аналогичен компоненту TBbutton, но может содержать пиктограмму формата BMP или ICO.

Компонент TEdit (Поле ввода) – текстовое поле, которое в отличии от TLabel можно редактировать во время выполнения приложения. Текст, вводимый в поле ввода, хранится в свойстве Text.

Компонент TMemo предназначен для работы с многострочным текстом, который содержится в свойстве Lines.

Компонент TBitBtn отличается от TButton тем, что на нем можно отображать пиктограммы. Кроме этого, этот компонент имеет и свои особые свойства.

Kind – задает тип кнопки. Имеются несколько предопределенных типов иконки с готовой пиктограммой и текстом.

Glyph – если вас не устраивают предлагаемые рисунки, вы можете выбрать другие. Будет открыто диалоговое окно, необходимо указать путь к этому рисунку.

Более подробно с назначением и свойствами новых компонентов можно познакомится перейдя по ссылкам: TBitBtn (Кнопка с пиктограммой), TEdit (Поле ввода) и TMemo (Memo-поле).

Задание 9. Разработать приложение, в котором текст по щелчку на кнопке BitBtn1 будет копироваться из элемента Edit1 в метку Label1 и в Memo-поле.

Сохранить рисунок стрелки, указанный ниже, как файл.

Ход выполнения

1. Загрузите среду программирования Lazarus, создайте приложение, сохраните во вновь созданную папку (Проект –Сохранить как …).

2. Скопируйте в папку проекта файл с изображением стрелки.

3. Создайте интерфейс по образцу. Разместите на форме 4 элемента TLabel, 1 элемент TMemo, 1 элемент TEdit, 2 элемента TBItBtn.

4. Настройте свойство элементов, которое отвечает за текст на поверхности элемента.

5. Чтобы поместить на кнопке BitBtn1 пиктограмму в виде стрелочки нужно:

1) Выделить элемент BitBtn1.

2) Загрузить картинку с помощью свойство Glyph.

Напишите программный код для процедуры TForm1.BitBtn1Click:

6. Напишите программный код для процедуры TForm1.BitBtn2Click:

7. Программа готова. Запустите приложение и проверьте его работу.

Введите в текстовое поле произвольный текст и нажмите кнопку Копировать. Введенный вами текст должен скопироваться в поле надписи и в memo-поле.

Нажмите на кнопку Выход – произойдет выход из программы.

8. Сохраните проект (Проект – Сохранить).

В этом уроке мы изучили три новых компонента: TBitBtn(Кнопка с пиктограммой), TEdit (Поле ввода), TMemo (Многострочный текст), рассмотрели примеры их использования.

На следующем уроке поговорим о типах данных в среде Lazarus.

Текст в AutoCAD — Как написать и Как редактировать.

На чертежах в AutoCAD постоянно используется текст в виде надписей, текстовых пояснений или буквенно-цифровых обозначений.

Поэтому в данном уроке мы поговорим о том, какие виды текста в автокаде бывают. Также поговорим, как написать текст и как редактировать текст в автокаде.

Значения размеров не являются текстовыми объектами! О проставлении размеров и работе с ними мы поговорим в другом уроке.

Виды текста в AutoCAD.

В системе AutoCAD предусмотрено два вида текста — однострочный и многострочный.

Это два разных разных объекта и каждый из них предусматривает использование разных команды.

Для создания текста система AutoCAD может использовать как свои собственные векторные шрифты, так и Windows-шрифты, установленные на компьютере. При этом следует иметь в виду, что работа с векторными шрифтами осуществляется быстрее, а значит, и их использование является предпочтительным. Особенно это существенно для маломощных компьютеров.

Создание и редактирование однострочного текста в AutoCAD.

Перейдите на вкладку «Главная»панель «Аннотации»«Однострочный».

Я рекомендую пользоваться набором первых букв вызова команд. Для однострочного текста — это «ДТ».

После вызова команды программа попросит Вас указать точку вставки текста. При этом в командной строке появится следующий запрос:

[ Тек.текстовый стиль:»Стандарт» Высота текста:2.5000 Аннотивный: нет
Начальная точка текста или [Выравнивание /Стиль]: ]

В первой строке этого запроса выводится информация о текущих настройках текстового стиля — название стиля и высота текста. Стили текста в автокаде будут рассматриваться в другом уроке.


Во второй строке запроса необходимо указать точку, которая будет характеризовать месторасположение текста — так называемую точку вставки текста. По умолчанию вводимый текст будет располагаться справа от этой точки. Точку можно указать, задав координаты или указав просто ЛКМ (левой кнопкой мыши).

Далее необходимо указать размер шрифта. Запрос высоты появляется в том случае, если текущий текстовый стиль имеет нулевую высоту.

В моем случае высота текста задана 2,5мм. Если у Вас появляется такое числовое поле, то введите туда значение 2.5.

Илон Маск рекомендует:  Что такое код bzopen

Следующий шаг — это задание угла поворота текста. По умолчанию угол наклона принят равным 0, то есть никакого наклона нет и текст выводится по горизонтали.

Если вы с этим согласны, то нажмите Enter, если нет — задайте свое значение угла поворота текста в автокаде.

Наконец, когда со всем этим закончите, Вам будет предложено ввести сам текст. При этом появится мигающий курсор. Введите любой текст.

Чтобы создать еще одну строку с текстом, нажмите Enter. Вы перейдете на следующую строку.

Чтобы закончить написание текста в автокаде нажмите еще раз Enter.

При создании нескольких строк с помощью однострочного текста в автокаде каждая строка текста является независимым объектом, который можно переносить и форматировать.

В этом и заключается их разница от многострочного текста, в котором весь текст, из скольких бы он строк ни состоял, воспринимается и обрабатывается как один объект.

Строки однострочного текста необязательно должны располагаться друг под другом. Вы можете их создавать в разных местах чертежа. Для этого после окончания ввода одной строки вместо нажатия Enter просто щелкните мышкой в том месте, где следует создать другую однострочную надпись.

Чтобы отредактировать однострочный текст в autocad просто произведите двойной щелчок ЛКМ по самому тексту. После этого текст станет выделен и будет активен для редактирования.

Вы сразу же сможете вводить новый текст поверх старого. Либо мышкой выделите ту часть, которую надо отредактировать.

А при нажатии ПКМ в режиме редактирования Вам станет доступно контекстное меню по работе с однострочным текстом в автокаде.

Выравнивание однострочного текста.

По умолчанию вводимый текст располагается справа от указанной точки вставки и над ней.

Однако это не всегда удобно. Бывают ситуации, когда необходимо расположить текст слева от точки вставки, ниже ее и т.д.

Такая возможность в AutoCAD реализована в виде опции «Выравнивание». Обратите внимание на самый первый запрос программы при вызове команды «Текст».

[ Начальная точка текста или [Выравнивание /Стиль]: ]

В ответ на нее в командной строке или просто на рабочем пространстве нажмите клавишу «В».

После ее вызова в командной строке появится запрос, предназначенный для выбора нужного вида выравнивания:

Рассмотрите эти варианты выравнивания текста в автокаде на наглядном рисунке. Кстати эти точки также являются точками привязки к тексту.

Есть еще две дополнительные опции, предназначенные для размещения текста
точно между двумя указанными точками: опция «впИсанный» и опция «Поширине».

Опция «впИсанный». Выбор опции можно произвети, нажав клавишу «И», а затем Enter на клавиатуре.

Далее потребуется просто указать две точки, между которыми должен располагаться
текст. Причем текст будет выводиться таким образом, чтобы заполнить
все пространство между двумя указанными точками. Ширина букв текста будет установлена автоматически. И пропорционально ширине будет принята и высота текста.

Если точки будут находиться не на одной горизонтали, то строка текста в autocad будет выведена под наклоном к оси X.

Опция «Поширине». Выбор опции можно произвети, нажав клавишу «П», а затем Enter на клавиатуре.

Далее также указываем две точки расположения строки текста. Разница между опциями состоит лишь в том, что от Вас потребуется указать еще высоту текста. У меня эта высота задана 2,5мм. Ширины букв по-прежнему будет вычисляться автоматически, исходя из расстояния между точками.

При этом возможны искажения: если вы граничные точки строки текста зададите слишком далеко друг от друга, а высоту букв укажете небольшую, то буквы будут непропорционально широкими.

Создание и редактирование многострочного текста в AutoCAD.

Под многострочным текстом в AutoCAD понимается массив текста, состоящий из нескольких строк (или даже абзацев, столбцов). И воспринимается он как единый объект.

Для многострочного текста используется встроенный в AutoCAD текстовый редактор, который позволяет форматировать не только целые фразы целиком, но также отдельные слова и буквы. В нем существует даже возможность проверки орфографии.

Для создания многострочного текста на чертеже в системе AutoCAD я использую короткую команду «МТ». Для ознакомления я покажу вам, где находятся сами кнопки вызова команд однострочного и многострочного текста в автокаде.

в которой должен располагаться текст. Для этого потребуется сначала указать месторасположение первого угла области, а затем — второго угла (по диагонали).

Обращайте внимание на командную строку! Появился запрос:

[ Текущий текстовый стиль: «Стандарт» высота текста: 2.5 Аннотативный: Нет
Первый угол: ]

Верхняя строка напоминает Вам о текущем текстовом стиле и высоте текста. Во второй строке Вы можете ввести значение координаты первого угла прямоугольной области. Я же это делаю графически, указывая точку на чертеже мышью.

Далее указываем второй угол, противоположный первому. Я это также делаю мышью. вы же можете задать с помощью координат. При использовании мыши на экране будет отображаться рамка, показывающая размеры текстовой области.

После того как Вы задали текстовую область в AutoCAD появится окно встроенного текстового редактора. На ленте инструментов AutoCAD появляется специальная вкладка «Текстовый редактор», с помощью которой можно будет задать или изменить настройки внешнего вида текста.

Работа в текстовой области абсолютно аналогична работе в любом текстовом редакторе.


По окончании ввода текста нажмите комбинацию клавиш «Ctrl»+»Enter».

Редактирование многострочного текста в AutoCAD.

Чтобы приступить к редактированию многострочного текста, следует дважды щелкнуть по нему ЛКМ. В результате откроются уже знакомое нам окно ввода текста и вкладка «Текстовый редактор», с помощью которых Вы сможете произвести все необходимые правки и изменения.

Здесь также доступно контекстное меню, с помощью которого можно копировать и вырезать текст, снимать всё проделанное форматирование, объединять абзацы и прочее. Посмотрите на него сами. Тут тоже все просто.

Очень удобно редактировать параметры текста (выравнивание, угол поворота, ширину текстового блока, стиль текста и т. д.) с помощью окна «Свойства». Для начала выйдите из редактора, выделите саму текстовую область и нажмите комбинацию клавиш «Ctrl»+»1».

Импорт текста в автокаде из различных источников.

Очень часто бывает необходимо внести на чертеж многострочный текст, который
уже имеется в некотором текстовом файле.

Если имеющийся текст находится в формате .txt или .rtf, то удобно импортировать текст в автокад следущим образом.

Откройте два окна (Окно AutoCAD и окно проводника с текстовым файлом) одновременно. Зажмите ЛКМ на текстовом файле и, не отпуская ее, перетащите файл в область окна AutoCAD.

Весь текст скопируется в AutoCAD.

Я же чаще всего использую буфер обмена Windows. Т.е. открываю файл любого формата, выделяю нужный мне текст и нажимаю комбинацию клавиш «Ctrl»+»C». А затем перехожу в AutoCAD, вхожу в текстовый редактор и нажимаю комбинацию клавиш «Ctrl»+»V».

Если Вам не удобно нажимать данные комбинации, Вы всегда можете воспользоваться контекстным меню (вызывается нажатием правой кнопки мыши). А там уже выбирать нужный пункт «Копировать», «Вырезать» или «Вставить».

Про текст в AutoCAD можно говорить долго. Мы же пока рассмотрели только самые необходимые возможности. Про текстовый редактор в автокаде на сайте есть отдельная статья.

Что ж. Надеюсь, Вы усвоили данный материал. И теперь знаете, как создать, импортировать и копировать текст в AutoCAD. А также разобрались с понятиями «однострочный» и «многострочный» текст в автокаде.

Многострочная метка

19.10.2020, 07:54

Многострочная строка
У меня в Текстбоксе есть Многострочный текст. Хочу в цикле обойти и обработать все строки.

Многострочная строка
Всем привет. Столкнулся с трудностью. Есть, например, следующий кусок текста, причем весь он (с.

Многострочная надпись
Привет. Я задумала информатику своему подарить прогу: нажимает он на на название группы, название.

Многострочная надпись
Можно ли Label сделать многострочной или чем заменить?

Многострочная вставка DataGridView
Добрый вечер! Подскажите, пожалуйста, как можно реализовать многострочную вставку текста в.

Многострочный заголовок у TBitBtn 2

Я создал удобный компонент, инкапсулирующий обычную кнопку, но с возможностью многострочного заголовка. В *действительности* — это TBitBtn, чей Glyph *нарисован* в виде заголовка с переносом текста. Реальный заголовок невидим. Это работает! Попробуйте с этим поэкспериментировать и сообщите мне о ваших новых находках. Я был удивлен, что это свойство оказалось легко *подавить*. Тем более, что это свойство public/published, а не какой-то кот в мешке. Все это так, но вы можете перекрыть свойство другим с таким же именем и с атрибутом READ ONLY. И вы можете ссылать на свойство предка, как, например, «Inherited Glyph». ООП!

Copyright © 2004-2020 «Delphi Sources». Delphi World FAQ

Как сделать многострочную надпись на tbitbtn?

Как на кнопке в design time сделать многострочную надпись?
Заранее спасибо.

Смотря на какой.
Если TBitBtn, то просто добавить #13#10

«1 #13#10 2» — не работает. Можно пример?

Song © (29.04.02 16:00)
Тоже действует и для TButton

2Anatoly Podgoretsky © (29.04.02 16:22)
Неа, не действует.
Чтобы действовало нужно CreateParams перекрывать.

Да наверно так, просто забыл

В Run time это понятно как сделать. А как когда в Object Inspector Caption руками вбиваешь?

Можно просто зарегистрировать свой редактор свойства (как в RX сделано для Hint) и этот редактор сам будет добавлять 0D 0A.

AFROLOV © (29.04.02 16:41)
Тебе вбить или увидеть в дизайн?

Вбить, ну и увидеть тоже хотелось бы.

Как сделать многострочную надпись на tbitbtn?

Компонент Delphi BitBtn это пиктографическая кнопка, представляющая собой один из вариантов стандартной кнопки Button. В отличие от последней кнопка Delphi BitBtn умеет отображать на своей поверхности не только надпись, но и изображение, которое задаётся свойством Glyph. В состав Delphi входит большое количество готовых изображений, которые можно размещать на кнопках Delphi BitBtn. В стандартном случае они располагаются по адресу C:\Program Files\Common Files\Borland Shared\Images\Buttons .

Свойство Kind компонента Delphi BitBtn определяет один из стандартных вариантов кнопки BitBtn:

Нажатие на любую из них (кроме кнопок со свойством BitBtn.Kind, равным bkCustom или bkHelp) приводит к закрытию модального окна, в котором она установлена, а результат, возвращаемый в программу равен mrName (Name — Yes, Abort, Cancel и т.д. — название кнопки). Отличие есть у кнопки Close, её нажатие (после закрытия модального окна) приводит к возвращению не mrClose а mrCancel, а для главное окно программы просто закрывается, поэтому работа программы сразу завершается.
В случае если пиктограмма Glyph у кнопки Delphi BitBtn была изменена, система Delphi автоматически изменит и её значение BitBtn.Kind, которое станет равным bkCustom

Специфические свойства компонента — пиктографической кнопки Delphi BitBtn перечислены в таблице:

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL