Информация

Последние записи

Теги


Блоги


Записи из всех блогов с тегом: Delphi


Программно открыть или закрыть TcxPopupEdit в TcxVerticalGrid

В cxVerticalGrid может быть строка, где Properties.EditProperties := PopupEdit
Как можно закрыть или открыть программно выпадающее окно.


procedure VerticalGridDropDownRow(vg: TcxVerticalGrid; aRow: TcxEditorRow; aDropedDown: boolean);
Var
  AEdit: TcxPopupEdit;
begin
  vg.SetFocus;
  vg.FocusedRow := aRow;
  vg.ShowEdit;
  if (vg.InplaceEditor <> nil) and (vg.InplaceEditor is TcxPopupEdit) then
  begin
    AEdit := TcxPopupEdit(vg.InplaceEditor);
    AEdit.DroppedDown := False;
  end;
end;


У TcxPopupEditProperties отсутствует метод или свойство, позволяющее открыть/закрыть Popup control.
Popup подразумевает работу только с ним. Нельзя открывать несколько Popup`ов одновременно. При потере фокуса Popup должен закрыться.
автор: X11 добавлено: 25 окт 16 просмотры: 1444, комментарии: 0



Выложен Lazy Delphi Builder 1.14.14.362 и 364 (альфа)

Блог: TDelphi-блог
Выложена версия Lazy Delphi Builder 1.14.14.362. Исправлен Exception при добавлении пути в Lazy Paths. В редакторе IDE search paths исправлены ошибки с подсветкой несуществующих папок. Добавлена новая команда Replace selected with env var (auto) - которая заменяет часть пути на Environment variable (переменные ищутся в Lazy Environment variables и IDE environment variables) Download here Lazy Delphi Builder 1.14.14.364 alpha. обновлён JCL: * исправлена ошибка с некорректным ключом dcc32 -N"Snamespace" * улучшена поддержка версий Delphi XE2+ * другие исправления Эту версию я ещё не тестировал. Если что-то найдёте - дайте знать.

[[ Полный текст записи доступен в TDelphi-блоге]] читать дальше...
автор: debose добавлено: 16 апр 16 просмотры: 1014, комментарии: 0



Lazy Delphi Builder 1.14.14.356 доступен

Блог: TDelphi-блог
В этом блоге, последний раз я выкладывал анонс версии 1.10.9.269 от 2014-03-15. Новые версии продолжали выходить, я о них писал на сайте проекта и на страничке Lazy Delphi Builder в Google+. Пользователям версии 1.10.9.269 от 2014-03-15 настоятельно рекомендую обновиться – была исправлена критическая ошибка приводившая к раздуванию файла LazyDBP и торможению работы. Основные нововведения опишу здесь. За деталями – добро пожаловать в history_en.txt. Большие изменения Добавлена поддержка "portable" инсталляций (нужен только dccXX.exe и папка Lib) Поддержка Delphi XE8-Seattle Добавлен тулбар и горячие клавиши для навигации по build log Интерфейс больше не блокируется на время компиляции (Application.ProcessMessages наше всё) Режим /noop – когда никаких реальных действий с...

[[ Полный текст записи доступен в TDelphi-блоге]] читать дальше...
автор: debose добавлено: 01 апр 16 просмотры: 968, комментарии: 0



Выложен Lazy Delphi Builder 1.14.14.360 (исправления ошибок)

Блог: TDelphi-блог
01.04.2016. Lazy Delphi Builder 1.14.14.360: Исправления ошибок. Исправлены ошибки с относительными путями. Как для путей в LazyDBP файле так и для переменной $(BUILTIN_PROFILE_DIR) Консольная версия не возвращала ERRORLEVEL если при удалении или создании папки случалась проблема Очень тормозило построение дерева после удаления узла MRU файлы. Последний загруженный отправляется наверх. Наконец-то. Новый параметр командной строки /MaxProblemCountToStop Значение BUILTIN_PROFILE_DIR переменной выводится после загрузки профиля в /debug режиме в консольной версии  Скачивать

[[ Полный текст записи доступен в TDelphi-блоге]] читать дальше...
автор: debose добавлено: 01 апр 16 просмотры: 744, комментарии: 0





Изменение курсора и автоматическое восстановление при выходе из метода

Блог: TDelphi-блог
Не знаю как у вас, а у меня коде (vcl приложение) полным-полно таких конструкций: var tmpOldCursor: TCursor; begin tmpOldCursor := Screen.Cursor; try Screen.Cursor := crHourglass; // код который может работать относительно долго // например, выполнять запрос в БД finally Screen.Cursor := tmpOldCursor; end; end; И мне это надоело. По двум причинам: увеличение размера модулей - по 8 строк кода на каждый такой случай разбухание секции uses, ведь чтобы это работало нужно в каждый модуль работающий с курсором добавить uses Forms, Controls; Поэтому давайте уже воспользуемся механизмом подсчёта ссылок в интерфейсах, и реализуем маленький класс избавляющий нас написания лишнего кода. Так чтобы вышеприведённый пример можно было упростить до 1й...

[[ Полный текст записи доступен в TDelphi-блоге]] читать дальше...
автор: debose добавлено: 21 сен 15 просмотры: 1038, комментарии: 0



TcxTreeList - цикл по выделенным узлам

Как пройтись циклом по выделенным узлам TcxDBTreeList?


var
  I, d: Integer;
begin
  for I := 0 to pred(dbTree.SelectionCount) do
    d := TcxDBTreeListNode(dbTree.Selections[i]).KeyValue;
автор: X11 добавлено: 07 май 15 просмотры: 1273, комментарии: 0



WebDAV Диск.Яндекс + Delphi (InDy TidWebDAV)

Стоит задача опубликовать файл, который находится в папке Яндекс-Диска.
Т.е. файл там уже есть, нужно только дать команду опубликовать и получить в ответ ссылку на скачивание файла.

На форму кидаем кнопку, компоненту TidWebDAV, TIdSSLIOHandlerSocketOpenSSL TIdLogFile и связываем их, добавляем ещё на форму компоненту TMemo, в которую будет выводить результат.
В папку проекта копируем 2 файла: ssleay32.dll и libeay32.dll т.к. общение будет проходить по протоколу https.
Будем использовать OAuth авторизацию, для которой не нужны логин и пароль.
В корне Яндекс-Диска есть папка tst, в которой лежит файл readme.txt. Его и будем публиковать и получать ссылку на скачивание. Чтобы опубликовать файл или папку, следует передать XML файл с набором команд. В ответ тоже получим XML со ссылкой на опубликованный файл.

Для получения OAuth токена следует прочитать это: https://tech.yandex.ru/oauth/
Принцип такой.
Каждый пользователь программы должен получить свой OAuth для своей учётной записи Яндекса.
Авторизуемся на сайте oauth https://oauth.yandex.ru/ и создаёт новое Приложение, даём ему название и выбираем, какие сервисы Яндекса будут доступны этому Приложению ( http://f6.s.qip.ru/14a5VJj7F.png ). Приложение - это условно набор яндекс-сервисов.

Когда получили ID (client_id) только что созданного приложения, то уже можем получить oauth token по такой ссылке:
https://oauth.yandex.ru/authorize?response_type=token&client_id=c953e33d6ec14895aa736f33143e73n7
Это всё есть в документации. См ссылки ниже.

procedure TForm2.Button1Click(Sender: TObject);
Var
 s, r: TStringStream;
 u: UTF8String;
begin
  u := '<propertyupdate xmlns="DAV:">' + sLineBreak +
  '<set>'  + sLineBreak +
    '<prop>'  + sLineBreak +
      '<public_url xmlns="urn:yandex:disk:meta">true</public_url>'  + sLineBreak +
    '</prop>'  + sLineBreak +
  '</set>'  + sLineBreak +
'</propertyupdate>';

  s := TStringStream.Create(u);

  s.Seek(0, 0);

  r := TStringStream.Create('');
  try
    IdWebDAV1.Request.Clear;
    IdWebDAV1.Request.CharSet := 'UTF-8';
    IdWebDAV1.Request.BasicAuthentication := False;
    IdWebDAV1.Request.Host := 'webdav.yandex.ru';
    IdWebDAV1.Request.CustomHeaders.Add('Authorization: OAuth 6e1ec970696e432093c4e09df9582972');
    IdLogFile1.Active := True;
    IdWebDAV1.DAVPut DAVPropPatch('https://webdav.yandex.ru/tst/readme.txt', s, r);
    r.Position := 0;
    Memo1.Lines.Text := UTF8Decode(r.DataString);
  finally
    s.Free;
    r.Free;
  end;
end;


Delphi 2007, Indy 10_4885.

Ссылки:
Описание WebDav API Диска: https://tech.yandex.ru/disk/webdav/
Публикация файлов и папок: https://tech.yandex.ru/disk/doc/dg/reference/publish-docpage/
Об OAuth http://www.webdelphi.ru/tag/oauth/


Дополнительно.
У Яндекса есть Полигон для тестирования REST API https://tech.yandex.ru/disk/poligon/ , но это не относится к WebDAV.
автор: X11 добавлено: 27 ноя 14 просмотры: 4802, комментарии: 2



Как получить видимое значение в строке типа LookupComboBox в TcxVerticalGrid?

Есть cxVerticalGrid со строкой (Properties.EditProperties) типа LookupComboBox. Как получить не значение ключевого поля, а именно то, значение, которое видит пользователь?

S := TcxLookupComboBoxProperties(cxEditorRow1.Properties.EditProperties).GetDisplayText(cxEditorRow1.Properties.Value);
автор: X11 добавлено: 14 ноя 14 просмотры: 2058, комментарии: 0



Lazy Delphi Builder 1.10.8.268 Alpha от 27.02.2014.

Блог: TDelphi-блог
Скачивать здесь Очень много нововведений. Существенно переписано ядро. Экспериментальный устаревший TasksEx отвечавший за работу в фоне, заменен на Awaitable модуль от Романа Янковского. Если обнаружите ошибку, пожалуйста, сообщите. История изменений Новое: Возможность использовать dccaarm, dcciosarm, dccios32 для сборки Появилась возможность компилировать только debug или только release - в Build dialog добавлена галочка Build release dcus. Добавлены preset-ы для scan file masks Добавлен preset "default" чтобы дать возможность сбросить настройки к значениям по умолчанию. Реализовано для: output directories, file scan masks В диалоге Build settings теперь показывается страница настроек Search Paths Выводить Total...

[[ Полный текст записи доступен в TDelphi-блоге]] читать дальше...
автор: debose добавлено: 20 апр 14 просмотры: 1249, комментарии: 0


предыдущие записи