Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

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

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

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

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

Интервал:

Закладка:

Сделать

ifKey = VK_RIGHT theninc(CurPos);

Label1.Caption:= IntToStr(CurPos);

end;

GroupBox

Рисование на GroupBox

Я хочу рисовать на холсте (Canvas) моего компонента GroupBox. Но когда я пробую рисовать на Component.Parent.Canvas, рисование происходит на форме, а не на моем компоненте GroupBox. Что я делаю неправильно?

Canvas – защищенное свойство TGroupBox и, поэтому, недоступное. Вы можете сделать его доступным следующим образом:

typeTMyGroupBox = class(TGroupBox)

public

propertyCanvas;

end;

procedureSomeProcedure;

begin

withTMyGroupBox(GroupBox1).Canvas do

CopyRect(ClipRect, Image1.Canvas, ClipRect);

end;

– Ralph Friedman

Доступ к компонентам GroupBox

Delphi 1

Одно из свойств всех элементов управления – указатель на другие элементы, которые он содержит. Это свойство – свойство Controls, которое индексируется наподобие массива. Количество элементов управления содержится в свойстве ControlCount. Если вы хотите получить доступ к свойству или методу, которого нет у TControl, вам неоходимо осуществить приведение типа элемента списка.

procedureDoSomethingWithAGroupBox;

vari: integer;

begin

with AGroupBox do

fori := 0 toControlCount - 1 do

ifcontrols[i] isTEdit then

TEdit(controls[i]).text := 'Как насчет этого?';

end;

end;

Приведенный выше пример будет работать, если элементом управления является TEdit или его наследник, например, TDBEdit или TMaskEdit. Все объекты могут быть приведены к типу одного из объектов, являющегося наследником базового типа (или им самим). Но не спешите приводить все к родительскому классу, родитель в данном случае здесь не подходит, поскольку он означает объект, который содержит сам себя.

Label

Как сделать бегущую строку?

Письмо читателя

The_Spriteотвечает:

с помощью TLabel и TTimer. Пример:

procedureTForm1.Timer1Timer(Sender: TObject);

Const

LengthGoString = 10;

GoString = 'В конце строку желательно повторить,'+

' чтоб получить эффект кольцевого движения! В конце ст';

Consti: Integer = 1;

begin

Label1.Caption:=Copy(GoString,i,LengthGoString);

Inc(i);

IfLength(GoString)-LengthGoString < i theni:=1;

end;

ListBox

Навигация в ListBox при множественном выборе

Тема: Навигация в ListBox при множественном выборе

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

procedureTForm1.Button1Click(Sender: TObject);

varLoop: Integer;

begin

forLoop := 0 toListbox1.Items.Count – 1 do begin

if listbox1.selected[loop] thenShowMessage(Listbox1.Items.Strings[Loop]);

end;

end;

Внешние данные и ListBox

Delphi 2

Мне необходимо создать Listbox с использованием внешних данных, хранимых в огромном (!) TStringList. Существует ли какое-нибудь системное сообщение, которое я мог бы перехватывать для получения данных Listbox из внешнего TStringlist?

Просматривая справочник по API, я нашел интересный пункт, который может помочь вам решить проблему: в Win32 вы можете создать Listbox со стилем LBS_NODATA:

(из описания CreateWindow:)

LBS_NODATA

Определяет ListBox со стилем no-data (без данных). Данный стиль необходимо применять в случае, если количество элементов в ListBox превышает одну тысячу. no-data ListBox также должен иметь стиль LBS_OWNERDRAWFIXED, но не может иметь стиль LBS_SORT или LBS_HASSTRINGS.

no-data ListBox похож на owner-drawn ListBox за исключением того, что он не содержит в своих элементах строк и изображений (иконок). Команды добавления, вставки или удаления данных в элементах такого типа ListBox будут проигнорированы, а запросы для поиска строк всегда будут заканчиваться неудачей. При необходимости отрисовки данного элемента, Windows посылает родительскому окну сообщение WM_DRAWITEM. Член itemID стуктуры DRAWITEMSTRUCT, передаваемой с сообщением WM_DRAWITEM, определяет номер строки (элемент), который должен быть перерисован. no-data ListBox не посылает сообщение WM_DELETEITEM.

Количество элементов в таком списке вы можете установить с помощью сообщения LB_SETCOUNT. Это позволит вам создать «виртуальный» ListBox с очень небольшой загрузкой.

Чтобы воспользоваться новым стилем, вам нужно создать новый класс-наследник от TListbox и перекрыть метод CreateParams.

– Peter Below

Инкрементальный поиск в ListBox II

Я видел приложение, в котором ListBox позволял осуществлять инкрементальный поиск. При вводе очередного символа он позиционирует вас к первой ячейке, начало значения которой совпадает с введенным пользователем текстом, или выделяет все строки с текстом, содержащим введенный текст.

Как это осуществить на Delphi?

Здесь придется немного воспользоваться Win API. Установите свойство формы KeyPreview в True и сделайте примерно следующее:

unitLbxSrch;

interface

usesWindows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls;

typeTFrmLbxSrch = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

ListBox1: TListBox;

Label1: TLabel;

procedureFormKeyPress(Sender: TObject; varKey: Char);

procedureListBox1Enter(Sender: TObject);

private

{ Private declarations }

FPrefix: array[0..255] ofchar;

public

{ Public declarations }

end;

varFrmLbxSrch: TFrmLbxSrch;

implementation

{$R *.DFM}

procedureTFrmLbxSrch.FormKeyPress(Sender: TObject; varKey: Char);

{ Помните о том, что свойство KeyPreview должно быть установлено в True }

var

curKey: array[0..1] ofchar;

ndx: integer;

begin

ifActiveControl = ListBox1 then begin

ifkey = #8 {Backspace (клавиша возврата)} then begin

ifFPrefix[0] <> #0 then begin

FPrefix[StrLen(FPrefix) - 1] := #0;

end

end else begin

curKey[0] := Key;

curKey[1] := #0;

StrCat(FPrefix, curKey);

ndx := SendMessage(ListBox1.Handle, LB_FINDSTRING,-1, longint(@FPrefix));

ifndx <> LB_ERR thenListBox1.ItemIndex := ndx;

end;

Label1.Caption := StrPas(FPrefix);

Key := #0;

end;

end;

procedureTFrmLbxSrch.ListBox1Enter(Sender: TObject);

begin

FPrefix[0] := #0;

Label1.Caption := StrPas(FPrefix);

end;

end.

– Ralph Friedman

Табуляция в графическом ListBox'е

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

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

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




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


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

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