Перейти к содержанию
Fire Monkey от А до Я

loony-pants

Пользователи
  • Постов

    12
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные loony-pants

  1. Вопрос следующий: Существует ли CMS, заточенная конкретно под Firemonkey? Цель следующая: удалённый сервер-соц сеть, под неё делается приложение на Firemonkey для обмена сообщениями, картинками и прочим. Стоит ли использовать уже готовые CMS, или же придётся работать над своей? Сам долгое время работал с joomla...

  2. Впервые взялся за разработку Клиент-серверного приложения.  Нашёл пример с IdTCPServer и IdTCPClient, попытался начать с реализации  запроса-ответа. При нажатии на кнопку клиент зависает (Как я понял - соединение не происходит). Ip адрес указывал просмотрев с сайта 2ip.ru и тот, что в "сведениях о сетевом подключении" - результат один и тот же - Зависает клиент. Пробовал с IdUDPClient и IdUDPServer - работает, НО только во внутренней сети, а мне необходим глобальный обмен.

     

    Клиент:

    procedure TForm2.LoginButtonClick(Sender: TObject);
    begin
    try
      IdTCPClient1.Host :='127.0.0.1'; /// Менял IP адрес 
      IdTCPClient1.Port:=55560;
      IdTCPClient1.Connect;
             except
            Memo2.Lines.Add('Не удается соединиться с указанным сервером');
            Exit;
            end;
      Memo2.Lines.Append(IdTCPClient1.Socket.ReadLn);
      IdTCPClient1.Disconnect;
    end;
    

    Сервер:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      section1 := TCriticalSection.Create;
      idTcpServer1.DefaultPort:=55560;
      idTcpServer1.Active:=true; 
    end;
    
    
    procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
    var
      strText: String;
    begin
      strText := AContext.Connection.Socket.ReadLn;
      AContext.Connection.Socket.WriteLn('Login: ' + strText);
       section1.Enter;
        Edit3.Text := AContext.Connection.Socket.Binding.PeerIP;
      section1.Leave;
      Memo1.Lines.Add(AContext.Connection.Socket.Binding.PeerIP);
      AContext.Connection.Disconnect;
    end;
    
  3. Здравствуйте, пишу приложение под андроид. Есть TImage, который подгружает Bitmap из сети. При отсутствии соединения появляется системная ошибка устройства "Error resolving Address". Подскажите пожалуйста, каким способом можно перехватить эту ошибку, чтобы вывести вместо неё своё сообщение на родном языке . Вот код подгрузки изображения:

    procedure TForm2.Button2Click(Sender: TObject);
    var
    mr:TMemoryStream
    begin
      mr := LoadWebImage('https://img.imgsmail.ru/r/default/portal/0.1.29/logo.png');
      Image1.Bitmap.LoadFromStream(mr);
        RoundRect1.Fill.Bitmap.Bitmap := Image1.Bitmap;
      mr.Free;
    end;
    
  4. Вопрос также по скриншотам. Имеется rectangle, на котром расположен некий компонент (с компонентом я еще не определился, т.к. ранее скриншоты не делал вообще), будь то TImage, tColorBox или же TPaintBox. На данном компоненте динамически создаются изображения, которые я могу перемещать и изменять их размер. Задача - после размещения всех нужных мне TImage сохранить скриншот данного компонента. Какие компоненты и функции для этого подойдут лучше всего? Платформа: Windows x32/x64

  5.  

    но я также пробовал обращение типа(тоже не вышло): 

    var

    FindImage := FindComponent(ListView2.Selected.Text);

    begin

    TImage(FindImage).OnMouseDown:=MyIMGMouseDown;

    Для корректного обращения необходимо привести результат FindComponent к TImage с помощью ключевого слова as.

    Пример:

    CoordX:=(Form1.FindComponent(ListView1.Selected.Text) as TImage).Position.X;

    Всё верно 

    FindImage:=(ColorBox1.FindComponent (ListView2.Selected.Text) as TImage); /// ColorBox1 у меня является Owner

    Ох и намаялся я... Ещё один момент: в var нужно прописать FindImage:TComponent   ...

    Спасибо, всё решено )

  6. Думаю. вопрос покажется некоторым довольно смешным, но я уже устал искать, в чём моя ошибка, и что я ввожу не так.

     

    Есть Код, динамически создающий на форме TIMAGE. Изображение создаётся корректно, всё отлично, при этом в ListView создаётся строка с именем данного TImage (Это сделано для того, чтобы при выборе в ListView строки нужного  TImage включалась функция перемещения изображения). Зашёл в тупик я в следующем:

     

    Когда я кликаю по TListView, я пытаюсь активировать следующую функцию для обработчика OnItemClick, но она не работает, а очень нужно мне, чтобы имя задавалось из ListView линии (ну на худой конец я могу этот item перевести в другой string, но это ничего не изменит):

     

    TImage(ListView2.Selected.Text).OnMouseDown:=MyIMGMouseDown;

     

    Ошибка по любому в красной области, т.к. я обращаюсь к TImage как к String

     

    но я также пробовал обращение типа(тоже не вышло): 

    var

    FindImage := FindComponent(ListView2.Selected.Text);

    begin

    TImage(FindImage).OnMouseDown:=MyIMGMouseDown;

     

    Прошу вас, уважаемые... Подскажите правильную форму обращения, иначе я сойду с ума )))))

     

     

  7. ExtractGroupHeaderItem(ListView1.Items, ListView1.Selected);
    Спасибо, всё заработало ) Век живи , век учись )
     
    Но я также нашёл решение своей проблемы другим способом - не через header:
    В  ListView  свойство  ItemAppearance выбрал ImageListItemBottomDetailRightButton. Затем в LiveBindings у ListView >> Item.Detail  привязал к моей колонке StringGrid через  BindSourceDB и прописал код:

     

    procedure TForm1.ListView1ItemClick(const Sender: TObject;

      const AItem: TListViewItem);
    begin
    if ListView1.Selected.Detail='Выключатель нагрузки' then
    begin
     
    StringGrid2.RowCount:=StringGrid2.RowCount+1;
    StringGrid2.Cells [0,StringGrid2.RowCount - 1]:= ListView1.Selected.Text;
    StringGrid2.Cells [1,StringGrid2.RowCount - 1]:= ListView1.Selected.ButtonText;
    end;
    if ListView1.Selected.Detail='Разъединитель высоковольтный' then
    begin
     
    StringGrid3.RowCount:=StringGrid3.RowCount+1;
    StringGrid3.Cells [0,StringGrid3.RowCount - 1]:= ListView1.Selected.Text;
    StringGrid3.Cells [1,StringGrid3.RowCount - 1]:= ListView1.Selected.ButtonText;
    end;

     

    :)
     
     
     
     

     

    а к чему привязывается байндинг тогда?

     

    Я неверно выразился. Я просто его не вижу в базе )))

     

  8. Доброе время суток! Есть приложение, одна из функций которого - Искать в базе данных необходимые Items и при выдаче результатов выбранный item должен попасть в заданный ему StringGrid (ну или в Memo - это не главное). При этом для удобства сортировки в базе данных (StringGrid , с привязкой BindSourceDB2) с items  создана отдельная колонка (в ней указано к какой группе принадлежит item), которая привязана к ItemHeader.Text в LiveBindings. В самом ListView всё довольно удачно сортируется - нужные Items под нужным Header, но когда я выбираю тот или иной item я не могу получить свойство Header у Selected item - его вообще нет в базе (но привязка в LiveBindings есть)

     

    if ListView1.Selected. ??????  then 
     
    begin
     
    StringGrid2.RowCount:=StringGrid2.RowCount+1;
    StringGrid2.Cells [0,StringGrid2.RowCount - 1]:= ListView1.Selected.Text;
     
    end;
     
    if ListView1.Selected. ??????  then 
     
    begin
     
    StringGrid3.RowCount:=StringGrid3.RowCount+1;
    StringGrid3.Cells [0,StringGrid3.RowCount - 1]:= ListView1.Selected.Text;
     
    end;
     
    Суть вопроса 0 Что необходимо подставить  вместо ??????, чтобы получить значение Header у выбранного мной item ?
  9. Такого быть не может, т.к. у меня все работает после корректировки. Вы юнит скопировали? положили к себе в папку? вы уверены что проект компилируется с измененным кодом?

    Всё отлично, я был не прав. Как вы и сказали, я просто не добавил файл в проект, а лишь скопировал в папку. ))) Нелепая глупость ...

  10.  

     

    Используй Listbox

    Хотелось бы увидеть пример. Пытался проделать подобное с ListView, но к сожалению я так и не понял, как сделать поддержку поиска кирилических символов. Т.е. добавляю Items с русскими названиями, а он при вводе выдаёт пустую строку

     

     

    http://fire-monkey.ru/topic/781-otklonenie-filtratciia-teksta-ne-korrektno-rab/ Проблема не в кириллице, а в регистре, точнее в  косяке реализации поиска с учетом регистра.

     

    Да да, я уже всё подкорректировал, но так и не видит их :-(

  11. Используй Listbox

    Хотелось бы увидеть пример. Пытался проделать подобное с ListView, но к сожалению я так и не понял, как сделать поддержку поиска кирилических символов. Т.е. добавляю Items с русскими названиями, а он при вводе выдаёт пустую строку

  12. Проблема такая: необходимо реализовать поиск по базе через  TComboEdit,  т.е. как на Яндексе - во время ввода слова, снизу открывается подсказка с возможными  вариантами (желательно без buttonclick). 

    Вообще изначально результаты планируется брать из memo, и выводить их как подсказку снизу.

×
×
  • Создать...