Доработки Rx
Модераторы: alexs, Модераторы
Код: Выделить всё
with LoginDialog do begin
Active := False;
if not Login then Halt;
end;
procedure TKpForm.LoginDialogCheckUser(Sender: TObject; const UserName, Password: string; var AllowLogin: Boolean);
begin
AllowLogin := False;
with DM.ZStatement.ExecuteQuery('SELECT CAST(id AS Integer), name, password, CAST(level AS Integer) FROM users WHERE name = "' + UserName + '"') do
if not(GetRow = -1) and ((TrimRight(GetString(3)) = '')
or (IntToStr(GetCRC32Int(UserName + Password)) = TrimRight(GetString(3)))) then begin
DM.UserId := GetInt(1);
DM.LastU := GetInt(1);
DM.UserName := Trim(GetString(2));
DM.Password := GetString(3);
DM.UserLevel := GetInt(4);
AllowLogin := True;
end else
ShowPopup('Невірне ім`я або пароль!', idDialogShield);
end;Нужен експорт RxDBGrid в dbf. Есть что-то готовое или надо самому делать?
Сделал проще:
procedure TBrowseForm.DataSetExportDbfExecute(Sender: TObject);
var
BM: TBookMark;
i: Byte;
begin
with DM, TDBF.Create(Self) do
try
BM := DBGrid.DataSource.DataSet.GetBookmark;
DBGrid.DataSource.DataSet.DisableControls;
FilePath := IniReadString(IniFileName, 'Main', 'DirDov', DirTemp);;
TableName := Caption + '.dbf';
KpForm.ShowPopup('Експорт ' + FilePath + TableName, idDialogInfo);
for i := 0 to DBGrid.Columns.Count - 1 do
with DBGrid.Columns.Items[i].Field do
FieldDefs.Add(FieldName, ftString, DataSize);
CreateTable;
Open;
while not(DBGrid.DataSource.DataSet.Eof) do begin
Append;
for i := 0 to DBGrid.Columns.Count - 1 do
Fields[i].AsString := UTF8ToCP866(DBGrid.DataSource.DataSet.FieldByName(DBGrid.Columns.Items[i].FieldName).AsString);
Post;
DBGrid.DataSource.DataSet.Next
end;
Close;
with DBGrid.DataSource.DataSet do
if BookmarkValid(BM) then
GotoBookmark(BM);
finally
DBGrid.DataSource.DataSet.EnableControls;
FreeBookmark(BM);
Free;
end;
end;
procedure TBrowseForm.DataSetExportDbfExecute(Sender: TObject);
var
BM: TBookMark;
i: Byte;
begin
with DM, TDBF.Create(Self) do
try
BM := DBGrid.DataSource.DataSet.GetBookmark;
DBGrid.DataSource.DataSet.DisableControls;
FilePath := IniReadString(IniFileName, 'Main', 'DirDov', DirTemp);;
TableName := Caption + '.dbf';
KpForm.ShowPopup('Експорт ' + FilePath + TableName, idDialogInfo);
for i := 0 to DBGrid.Columns.Count - 1 do
with DBGrid.Columns.Items[i].Field do
FieldDefs.Add(FieldName, ftString, DataSize);
CreateTable;
Open;
while not(DBGrid.DataSource.DataSet.Eof) do begin
Append;
for i := 0 to DBGrid.Columns.Count - 1 do
Fields[i].AsString := UTF8ToCP866(DBGrid.DataSource.DataSet.FieldByName(DBGrid.Columns.Items[i].FieldName).AsString);
Post;
DBGrid.DataSource.DataSet.Next
end;
Close;
with DBGrid.DataSource.DataSet do
if BookmarkValid(BM) then
GotoBookmark(BM);
finally
DBGrid.DataSource.DataSet.EnableControls;
FreeBookmark(BM);
Free;
end;
end;
Добавь, пожалуйста:
procedure TRxDBGrid.OnIniLoad(Sender: TObject);
...
//{$IFDEF FIX_WIDTH_WIDE_STRING96}
// if Screen.PixelsPerInch = 96 then
//{$ENDIF}
C.Width := Scale96ToForm(FPropertyStorageLink.Storage.ReadInteger(S1 + sWidth, C.Width)); // kit
procedure TRxDBGrid.OnIniLoad(Sender: TObject);
...
//{$IFDEF FIX_WIDTH_WIDE_STRING96}
// if Screen.PixelsPerInch = 96 then
//{$ENDIF}
C.Width := Scale96ToForm(FPropertyStorageLink.Storage.ReadInteger(S1 + sWidth, C.Width)); // kit
alexs писал(а):Точно будет работать? Не будет расползаться?
Тестирую на себе. Пока нерасползается. Можеш подождать пока протестирую на клиентах.
Проблеми при включении масштабирования в Windows?
Scale96ToForm должно помочь. Еще можна поставить птичку "Использовать масштабирование LCL (Hi-DPI)" но у моих клиентов со старими виндовсами програма перестала работать.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Я погоняю. Но проблема этим не решится
попробуй в SeesionProperty у формы добавить какие либо размеры компонентов с формы:
например - на форму два грида (мастер/детайл) со сплитером между ними.
Вот если начнёшь сохранять ширину этих гридов - то будут нежданчики.
попробуй в SeesionProperty у формы добавить какие либо размеры компонентов с формы:
например - на форму два грида (мастер/детайл) со сплитером между ними.
Вот если начнёшь сохранять ширину этих гридов - то будут нежданчики.
С SeesionProperty всегда били проблеми поетому я его не использую.
Добавь свой SessionProperty в RxIniPropStorage
Добавь свой SessionProperty в RxIniPropStorage
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Там (в TRxIniPropStorage) по хорошему надо делать обработку сохранения ширины и высоты
Я пока простой костыль вставил - смотри FinishPropertyList.
Лучше бы конечно дописать перемасштабирование. Но пока у меня это не главное - устроило такое поведение.
Если получится - допиши.
Я пока простой костыль вставил - смотри FinishPropertyList.
Лучше бы конечно дописать перемасштабирование. Но пока у меня это не главное - устроило такое поведение.
Если получится - допиши.
