Валентин Озеров - Советы по 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 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

FPickList := TPopupListbox.Create( nil);

FPickList.Visible := False;

FPickList.Parent := Self;

FPickList.IntegralHeight := True;

FPickList.ItemHeight := 11;

FPickList.Items.CommaText :='1,2,3,4,5,6,7,8,9,0';

end;

destructorTTestDropEdit.Destroy;

begin

FPickList.Free;

inherited;

end;

procedureTTestDropEdit.CloseUp(Accept: Boolean);

begin

ifFPickList.Visible then begin

ifGetCapture <> 0 thenSendMessage(GetCapture, WM_CANCELMODE, 0, 0);

SetWindowPos(FPickList.Handle, 0, 0, 0, 0, 0, SWP_NOZORDER orSWP_NOMOVE orSWP_NOSIZE orSWP_NOACTIVATE orSWP_HIDEWINDOW);

ifFPickList.ItemIndex <> -1 thenText := FPickList.Items.Strings[FPickList.ItemIndex];

FPickList.Visible := False;

Invalidate;

end;

end;

procedureTTestDropEdit.DropDown;

var

P: TPoint;

I,J,Y: Integer;

begin

ifAssigned(FPickList) and( notFPickList.Visible) then begin

FPickList.Width := Width;

FPickList.Color := Color;

FPickList.Font := Font;

FPickList.Height := 6 * FPickList.ItemHeight + 4;

FPickList.ItemIndex := FPickList.Items.IndexOf(Text);

P := Parent.ClientToScreen(Point(Left, Top));

Y := P.Y + Height;

if Y + FPickList.Height > Screen.Height then Y := P.Y - FPickList.Height;

SetWindowPos(FPickList.Handle, HWND_TOP, P.X, Y, 0, 0, SWP_NOSIZE orSWP_NOACTIVATE orSWP_SHOWWINDOW);

FPickList.Visible := True;

Invalidate;

Windows.SetFocus(Handle);

end;

end;

procedureTTestDropEdit.CMCancelMode( var Message: TCMCancelMode);

begin

if(Message.Sender <> Self) and(Message.Sender <> FPickList) thenCloseUp(False);

end;

procedureTTestDropEdit.WMKillFocus( var Message: TMessage);

begin

inherited;

CloseUp(False);

end;

procedureTTestDropEdit.WndProc( var Message: TMessage);

procedureDoDropDownKeys( varKey: Word; Shift: TShiftState);

begin

caseKey of

VK_UP, VK_DOWN:

ifssAlt inShift then begin

ifFPickList.Visible thenCloseUp(True)

elseDropDown;

Key := 0;

end;

VK_RETURN, VK_ESCAPE:

ifFPickList.Visible and not(ssAlt inShift) then begin

CloseUp(Key = VK_RETURN);

Key := 0;

end;

end;

end;

begin

caseMessage.Msg of

WM_KeyDown, WM_SysKeyDown, WM_Char:

withTWMKey(Message) do begin

DoDropDownKeys(CharCode, KeyDataToShiftState(KeyData));

if(CharCode <> 0) andFPickList.Visible then begin

withTMessage(Message) doSendMessage(FPickList.Handle, Msg, WParam, LParam);

Exit;

end;

end

end;

inherited;

end;

end.

Программное открытие ComboBox II

Delphi 1

procedureTForm1.ComboBox1Enter(Sender:TObject);

begin

SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, Integer(True), 0);

end;

Поместите эту строку в обработчик события OnEnter ComboBox:

SendMessage(combobox1.Handle, CB_SHOWDROPDOWN, 1, 0);

Измените третий параметр (1) на 0, если вы хотите спрятать список.

Проблемы с ComboBox

Delphi 1

…попробуйте сохранять в переменной в методе формы OnEnter или OnCreate значение Index. Затем, чтобы отменить выбор пользователя, сделайте:

ComboBox1.ItemIndex := var1;

DBEdit

Исправление DBEdit MaxLength

Delphi 1

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

По-моему, это является следствием этого кода в TDBEdit.DataChange (DBCTRLS.PAS):

ifFDataLink.Field <> nil then begin

ifFDataLink.Field.DataType = ftString thenMaxLength := FDataLink.Field.Size

elseMaxLength := 0;

end else begin

MaxLength := 0;

end;

т.к. иногда значение устанавливается на ноль…

Похоже все будет работать, если вы измените строку

MaxLength := 0;

на

MaxLength := inheritedMaxLength;

Для того, чтобы изменения вступили в силу, вам необходимо перекомпилировать ваш complib с измененным DBCTRLS.PAS, находящимся в пути lib.

Если вы хотите использовать MaxLength с StringField, изменений необходимо сделать немного больше:

if (FDataLink.Field.DataType = ftString) and(inherited MaxLength = 0) then

MaxLength := FDataLink.Field.Size

elseMaxLength := inheritedMaxLength;

Или использовать что-то типа EditMask…

– Reinhard Kalinke

Поиск и управление TEdit/TField

Я хотел бы менять цвет компонентов TDBEdit и TEdit, расположенных на форме, на другой, "отчетливый" цвет, в том случае, если с помощью них требуется ввести какие-либо данные.

Как насчет этого? Представляю вашему вниманию два метода. Первый метод задает цвет каждому DBEdit, имеющему требуемое поле. Второй метод (более сложный) задает цвет каждому БД-компоненту, имеющему необходимое поле.

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);

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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