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

Здесь есть возможность читать онлайн «Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Советы по Delphi. Версия 1.4.3 от 1.1.2001: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Советы по Delphi. Версия 1.4.3 от 1.1.2001»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Советы по Delphi. Версия 1.4.3 от 1.1.2001», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

procedureTForm3.Button3Click(Sender: TObject);

VarControl : Integer;

begin

ForControl := 0 ToControlCount-1 Do

IfControls[Control] IsTDBEdit Then

WithTDBEdit(Controls[Control]) Do

IfDataSource.DataSet.FieldByName(DataField).Required ThenColor := clRed;

end;

{ Данный метод будет работать только в случае, если БД-компонент обладает тремя полями: DataSource, типа TDataSource, DataField, типа String, и Color, типа TColor (это не должно быть проблемой). Также вам необходимо включить TypInfo в список используемых модулей }

procedureTForm3.Button4Click(Sender: TObject);

Var

Control : Integer;

DataSource : TDataSource;

DataField : String;

FunctionGetDataSource(Instance: TComponent) : Boolean;

VarPropInfo: PPropInfo;

Begin

Result := False;

PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, 'DataSource');

If(PropInfo <> Nil) And(PropInfo^.PropType^.Kind = tkClass) Then Begin

DataSource := TDataSource(TypInfo.GetOrdProp(Instance, PropInfo));

Result := DataSource <> Nil;

End;

End;

FunctionGetDataField(Instance: TComponent) : Boolean;

VarPropInfo : PPropInfo;

Begin

Result := False;

PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, 'DataField');

If(PropInfo <> Nil) And(PropInfo^.PropType^.Kind = tkString) Then Begin

DataField := TypInfo.GetStrProp(Instance, PropInfo);

Result := True;

End;

End;

ProcedureSetColor(Instance: TComponent; Color: TColor);

VarPropInfo : PPropInfo;

Begin

PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, 'Color');

If(PropInfo <> Nil) And(PropInfo^.PropType^.Kind = tkInteger) ThenTypInfo.SetOrdProp (Instance, PropInfo, Ord(Color));

End;

begin

ForControl := 0 ToControlCount-1 Do

IfGetDataSource(Controls[Control]) AndGetDataField(Controls[Control]) And

(DataSource.DataSet <> Nil) And

DataSource.DataSet.FieldByName(DataField).Required Then

SetColor(Controls[Control], clRed);

end;

– Robert Wittig

Insert/Override с помощью DBEdit

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

Сначала я добавляю к моей форме свойство (и соответствующие переменные и процедуры), наподобие этому:

private

FinsertMode: boolean;

procedureSetInsertMode(value: boolean);

public

propertyinsertMode: boolean readFinsertMode writeSetInsertMode;

В обработчике создания события формы я инициализирую его:

procedureTForm1.FormCreate(Sender: TObject);

begin

{инициализация}

insertMode := True;

end;

Также для этого свойства я создаю процедуру SetInsertMode, которая с помощью TPanel с именем Panel1 извещает пользователя о текущем режиме работы:

procedureTForm1.SetInsertMode(value: boolean);

begin

FinsertMode := value;

ifFinsertMode thenPanel1.Caption := 'ВСТАВКА'

elsePanel1.Caption := 'ПЕРЕЗАПИСЬ';

end;

Затем я добавляю три обработчика событий (OnKeyDown, OnKeyPress, OnEnter) для каждого моего DBEdit (можно при наличии нескольких компонентов создать один общий обработчик для всех):

procedureTForm1.DBEditKeyDown(Sender: TObject; varKey: Word; Shift: TShiftState);

begin

if(Key = VK_INSERT) theninsertMode := notinsertMode;

end;

procedureTForm1.DBEditKeyPress(Sender: TObject; varKey: Char);

begin

if( notinsertMode) and(Sender isTDBEdit) then(Sender asTDBEdit).SelLength := 1

else(Sender asTDBEdit).SelLength := 0;

end;

procedureTForm1.DBEditEnter(Sender: TObject);

begin

insertMode := True;

end;

Банзай! Похоже это работает, хотя я и не имел достаточного времени протестировать это. Естественно, вы можете изменить это по просьбе вашего заказчика (например, я всегда сбрасывал режим во вставку при перемещении к другому компоненту DBEedit). Все вышесказанное должно также работать без проблем и с компонентами Edit.

– Denis Sarrazin

Как очистить DBEdit

Delphi 1

Пробую так:

myDbEdit.Text := '';

или адрес TField, если вы хотите так:

TableNameMyField.Value := '';

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

Интервал:

Закладка:

Сделать

Похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Представляем Вашему вниманию похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Обсуждение, отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x