Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.03.2011, 18:46
hatsub hatsub вне форума
Прохожий
 
Регистрация: 12.03.2011
Сообщения: 18
Репутация: 10
Вопрос TListBox

Есть ли возможность в TListBox к конкретной строке создать событие двойной клик мышью?
При этом мне нужно запомнить id строки в TListBox и нужно написать код события. Подскажите пожалуйста как это сделать?
Ответить с цитированием
  #2  
Старый 12.03.2011, 19:19
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

можно, через OnDblClick, и потом в процедуре делаешь проверку через case:
0: нажали на первую строку;
1: нажали на вторую
и т.д....

p.S.: подробнее опиши что именно нужно
Ответить с цитированием
  #3  
Старый 12.03.2011, 20:12
hatsub hatsub вне форума
Прохожий
 
Регистрация: 12.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

С листбоксом разберусь чуть позднее, мне для курсовой нужно rss reeder написать... Возможно перемудрил, но все строки прокомментированы.
Все работает за исключением: не могу найти номер строки где идет закрывающий тег </title>(до какого символа использовать функцию copy())
Прошу помочь:

PHP код:
procedure TForm1.Button1Click(SenderTObject);
begin
  c
:=IdHTTP1.Get('http://mobile-review.com.feedsportal.com/c/33244/f/557683/index.rss');
  if 
c='' then showmessage('Ошибка'+#13+'невозможно получить html-код...')
  
else
  
begin
    n
:=length(c);
    for 
i:=1 to n do
    
begin
      temp
:=c[i]+c[i+1]+c[i+2]+c[i+3]+c[i+4]+c[i+5]+c[i+6]; // <title>
      
tempclose:=c[i]+c[i+1]+c[i+2]+c[i+3]+c[i+4]+c[i+5]+c[i+6]+c[i+7];  // </title>
      
if temp='<title>' then
      begin
        
//отсчитываем цикл начинаю от i и далее дабы найти закрывающий тег не перескакиваю в задницу
        //например i = 265
        
for j:=i to n do
        
begin
          
if tempclose='</title>' then
          begin
            
//находим номер до какого вкл функцию copy
            
title:=copy(c,i+7,j-1);
          
end;
        
end;
      
end;
    
end;
    
//проверка
    
showmessage('defined <title>');
    
showmessage(title);

  
end;
end
Ответить с цитированием
  #4  
Старый 12.03.2011, 20:24
hatsub hatsub вне форума
Прохожий
 
Регистрация: 12.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

Еще проблема в том что он находит этот <title>, но не первый по счету, а где то ближе к конце....Не знаю в чем дело
Ответить с цитированием
  #5  
Старый 12.03.2011, 20:29
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

а Pos или PosEx не пробовал использовать?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  c: string;
  n1,n2: integer;
  title: string;
begin
  c := IdHTTP1.Get('http://mobile-review.com.feedsportal.com/c/33244/f/557683/index.rss');
  if c = '' then
    ShowMessage('Ошибка'+#13+'невозможно получить html-код...')
  else
  begin
    n1 := Pos('<title>',c) + Length('<title>');
    n2 := Pos('</title>',c) - n1;
    title := Copy(c,n1,n2)
    ShowMessage(title);
  end;
end;

Последний раз редактировалось Assistant, 12.03.2011 в 20:36.
Ответить с цитированием
  #6  
Старый 12.03.2011, 20:38
hatsub hatsub вне форума
Прохожий
 
Регистрация: 12.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

Есть способ по проще, на панели internet есть XMLDocument1
насколько я понимаю прямая ссылка на rss ленту - xml.

нашел исходник как пример работы с xml:

PHP код:
procedure TForm1.Button3Click(SenderTObject);
var 
b:string;
begin
XMLDocument1
.LoadFromFile('http://mzilla.ru/news/rss');
XMLDocument1.Active := true;
:= XMLDocument1.DocumentElement.ChildNodes['lastBuildDate'].Text;
// "lastBuildDate" - присутствует в исходнике http://mzilla.ru/news/rss
XMLDocument1.Active := false;
//проверка
showmessage(b);
end

Выводит пустой showmessage, подскажие в чем проблема
Ответить с цитированием
  #7  
Старый 12.03.2011, 21:05
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Код:
var
  b: string;
begin
  XMLDocument1.LoadFromFile('http://mobile-review.com.feedsportal.com/c/33244/f/557683/index.rss');
  XMLDocument1.Active := True;
  b := XMLDocument1.DocumentElement.ChildNodes['channel'].ChildValues['title'];
  XMLDocument1.Active := False;
  ShowMessage(b);
end;
Ответить с цитированием
  #8  
Старый 12.03.2011, 21:21
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

советую почитать вот это и вот ЭТО

Последний раз редактировалось Assistant, 12.03.2011 в 21:23.
Ответить с цитированием
  #9  
Старый 13.03.2011, 07:38
hatsub hatsub вне форума
Прохожий
 
Регистрация: 12.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

Код который Вы мне скинули работает, теперь проблема в том как перейти на след. тег ['title']. Их на стр. как минимум 10.
Ответить с цитированием
  #10  
Старый 13.03.2011, 14:14
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

яж написал ссылки, которые стоит почитать
Ответить с цитированием
  #11  
Старый 13.03.2011, 14:52
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
unit Unit1;

interface

uses
  msxml,
  ComObj,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  XMLHTTP: Variant;
  xmldomdocument: IXMLDOMDocument;
  xmldomnodelist: IXMLDOMNodeList;
  i: Integer;
begin
  XMLHTTP:=CreateOleObject('Microsoft.XMLHTTP');
  XMLHTTP.open('GET', 'http://mobile-review.com.feedsportal.com/c/33244/f/557683/index.rss', False);
  XMLHTTP.send('');
  if XMLHTTP.status=200 then
  begin
    xmldomdocument:=(IUnknown(XMLHTTP.responseXML) as IXMLDOMDocument);
    xmldomnodelist:=xmldomdocument.getElementsByTagName('title');
    for i:=0 to xmldomnodelist.length-1 do
      if xmldomnodelist[i].parentNode.nodeName='item' then
        Memo1.Lines.Add(xmldomnodelist.item[i].text);
  end;
end;

end.

http://data.cod.ru/93233
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #12  
Старый 14.03.2011, 21:24
hatsub hatsub вне форума
Прохожий
 
Регистрация: 12.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

Теперь у меня не большие проблемы с этим:

PHP код:
procedure TForm1.ListBox1DblClick(SenderTObject);
begin

  
case listbox1.Items of
  1
begin showmessage('DbClick по первой строке'); end;
  
2begin showmessage('DbClick по второй строке'); end;
  
end;

end

Пишет ошибку: Unit1.pas(160): E2001 Ordinal type required
Ответить с цитированием
  #13  
Старый 14.03.2011, 21:25
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

listbox1.ItemIndex наверное
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #14  
Старый 14.03.2011, 21:26
hatsub hatsub вне форума
Прохожий
 
Регистрация: 12.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

и еще нумерация с нуля, спасибо огромное
Ответить с цитированием
  #15  
Старый 15.03.2011, 17:18
hatsub hatsub вне форума
Прохожий
 
Регистрация: 12.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

И все-таки возникает несколько проблем с ListBox
Как проверить пустой ли он?

if ListBox1.items[0]='' then

Пробовал еще с itemindex

пишет ошибку...

И еще вопрос как оформить текст/объект в виде ссылки..т.е. при клике открывался браузер...или это нужно еще много чего писать?

Последний раз редактировалось hatsub, 15.03.2011 в 17:24.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter