Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Название:Советы по Delphi. Версия 1.4.3 от 1.1.2001
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание
…начиная с 1001. Смотрите другие файлы…
Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
end;
varForm1: TForm1;
implementation
{$R *.DFM}
procedureTForm1.Button1Click(Sender: TObject);
begin
close;
end;
procedureTForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Label1.Caption := TEdit(Sender).Name;
end;
procedureTForm1.Edit2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Label1.Caption := TEdit(Sender).Name;
end;
end.
Включение ComboBox в TDBGrid
Delphi 1
Вот основные шаги чтобы сделать это:
1. Создавайте и рисуйте TComboBox (CB) при получении ввода ячейки необходимой колонки табличной сетки
2. Получайте текущее значение поля (если имеется) и помещайте его в CB
3. После всех манипуляций, поместите новое значение обратно в поле
4. Избавляемся от CB
DBLookupComboBox
Предустановка DBLookupComboBox
Delphi 1
Вы можете редактировать ваш источник данных. Говорят, вы хотите сохранить ваши lookuping-данные из таблицы customer в таблицу sales – 'Cust No'? Вы можете просто проинициализировать поля (задать значение по умолчанию), редактируя таблицу sales «Cust No»
withtbSales do begin
Edit;
FieldByName('Cust No').AsInteger := 1;
Post;
end;
Сортировка DBLookupComboBox по вторичному индексу
Delphi 1
Одним из способов вывести выши данные в другом порядке сортировки является использование TQuery и включение в SQL-запрос ключевого слова «order by». После чего вы можете установить этот запрос как DataSource в вашем DBLookupComboBox.
ПРИМЕР:
Если у вас имеется таблица Customer, содержащая «Customer_No» и «Customer_Name», и индексированная по Customer_No, то ваш запрос должен содержать в редакторе списка строк (свойство SQL) для вашего TQuery следующую строку:
select Customer_No, Customer_Name from Customer
order by Customer_Name
Значение DBLookupComboBox
Я думаю что у меня есть то, что вы хотите. Если вы обратитесь к свойству LookUpValue, то вы получите поле, которое .... ищете.
Я надеюсь что помог вам.
unitclookup;
interface
uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBLookup;
type
TDBJustLookupCombo = class(TDBLookupCombo)
private
{ Private declarations }
protected
{ Protected declarations }
functionGetLValue: TField;
public
{ Public declarations }
propertyLookUpValue: TField readGetLValue;
published
{ Published declarations }
end;
TDBJustLookupList = class(TDBLookupList)
private
{ Private declarations }
protected
{ Protected declarations }
functionGetLValue: TField;
public
{ Public declarations }
propertyLookUpValue: TField readGetLValue;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Data Controls', [TDBJustLookupList, TDBJustLookupCombo]);
end;
functionTDBJustLookupCombo.GetLValue: TField;
begin
Result := LookupSource.DataSet.FieldByName(LookUpField);
end;
functionTDBJustLookupList.GetLValue: TField;
begin
Result := LookupSource.DataSet.FieldByName(LookUpField);
end;
end.
DBMemo
Копирование содержимого DBMemo в DBMemo другого поля
Delphi 1
Попробуй:
DBMemo6.Lines:=DBMemo5.Lines.Assign;
Поиск текста в DBMemo
Delphi 1
Попробуйте так:
"Подключите" следующую процедуру к событию OnFind для FindDialog. Единственная проблема заключается в том, что в DBMemo я не могу получить выделенный текст, тем не менее в стандартном Memo такой проблемы нет.
procedureTMainForm.FindDialog1Find(Sender: TObject);
var
Buff, P, FT : PChar;
BuffLen : Word;
begin
WithSender asTFindDialog do begin
GetMem(FT, Length(FindText) + 1);
StrPCopy(FT, FindText);
BuffLen:= DBMemo1.GetTextLen + 1;
GetMem(Buff,BuffLen);
DBMemo1.GetTextBuf(Buff,BuffLen);
P:= Buff + DBMemo1.SelStart + DBMemo1.SelLength;
P:= StrPos(P, FT);
ifP = NIL thenMessageBeep(0)
else begin
DBMemo1.SelStart:= P – Buff;
DBMemo1.SelLength:= Length(FindText);
end;
FreeMem(FT, Length(FindText) + 1);
FreeMem(Buff,BuffLen);
end;
end;
Попробуйте так:
«Подключите» следующую процедуру к событию OnFind для FindDialog. Единственная проблема заключается в том, что в DBMemo я не могу получить выделенный текст, тем не менее в стандартном Memo такой проблемы нет.
begin
DBMemo1.SelStart:= P – Buff;
DBMemo1.SelLength:= Length(FindText);
end;
FreeMem(FT, Length(FindText) + 1);
FreeMem(Buff,BuffLen);
DBMemo1.SetFocus;
end;
DBNavigator
Настройки всплывающих подсказок в DBNavigator во время выполнения приложения
Возможно ли изменение свойства Hints компонента TDBNavigator во время выполнения программы?
Это должно работать:
procedureTForm1.Button1Click(Sender: TObject);
varix : integer;
begin
WithDBNavigator1 do
forix := 0 toControlCount - 1 do
ifControls[ix] isTNavButton then
withControls[ix] asTNavButton do
case index of
nbFirst : Hint := 'Подсказка для кнопки First';
nbPrior : Hint := 'Подсказка для кнопки Prior';
nbNext : Hint := 'Подсказка для кнопки Next';
nbLast : Hint := '';
{……}
end;
end;
– Freddy Hansson
Выключение кнопок в DBNavigator
Delphi 1
{ Расширение DBNavigator: позволяет разработчику включать и выключать
отдельные кнопки через методы EnableButton и DisableButton }
unitGNav;
interface
usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DBCtrls;
typeTMyNavigator = class(TDBNavigator)
public
procedureEnableButton(Btn : TNavigateBtn);
procedureDisableButton(Btn : TNavigateBtn);
end;
procedure Register;
implementation
procedureTMyNavigator.EnableButton(Btn : TNavigateBtn);
begin
Buttons[Btn].Enabled := True;
end;
procedureTMyNavigator.DisableButton(Btn : TNavigateBtn);
begin
Buttons[Btn].Enabled := False;
end;
procedure Register;
begin
RegisterComponents('Samples', [TMyNavigator]);
end;
Интервал:
Закладка: