Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевести с Delphi 
V
    Опции темы
Alca
Дата 14.10.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Перевести с Delphi?
Код

procedure TForm1.RemoveItemButtonClick(
  Sender: TObject);
var
  lv : TListView;
  li : TListItem;
  i, idx : integer;
  pb : TProgressBar;
begin
  lv := ListViewEx1;

  li := lv.Selected;

  if li <> nil then
  begin
    idx := li.Index;
    TProgressBar(li.Data).Free;    //<<<<<<<<<<<<< эту строку
    lv.Items.Delete(idx);

    //переместить индикаторы выше
    for i := idx to -1 + lv.Items.Count do
    begin
      li := lv.Items.Item[i];
      pb := TProgressBar(li.Data);          //<<<<<<<<<<<<< эту строку
      pb.Top := pb.Top - 
                (pb.BoundsRect.Bottom - 
                 pb.BoundsRect.Top);
    end;
  end;
end; 



--------------------
PM WWW ICQ Skype Jabber   Вверх
Alexeis
Дата 14.10.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



Код

TProgressBar(li.Data).Free


Код

delete (TProgressBar*)li.Data;


Код

pb := TProgressBar(li.Data);


Код

pb =  (TProgressBar*)li.Data;


Если совсем уж по плюсовому то
Код

pb =  static_cast<TProgressBar*>(li.Data);



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alca
Дата 14.10.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Спасибо. А такое?
Код

procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY; //эту строку??????????

procedure TForm1.WMNotify(var Message: TWMNotify);
var
 r: TRect;
 i: integer;
begin
 // Procйdure qui capture le message de "colonne resize"
 // afin d'adapter la taille de toutes les progressbar de la listview
 case Message.NMHdr.code of          //эту строку??????????
    HDN_ITEMCHANGED, HDN_ITEMCHANGING:
     // Pour plus d'infos sur les diffйrents messages des headers pour les listview, ce rapporter ici : (en anglais)
     // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/header/notifications/hdn_itemchanged.asp
     begin
      for i:=0 to Listview1.Items.Count-1 do
       begin
        r:=Listview1.Items[i].DisplayRect(drBounds);
        AdjustProgressBar(Listview1.Items[i], r);
       end;
      // On force le repaint de la listview pour йviter un bug d'affichage : il affichait des progressbar dans le header de la colonne.
      // L'inconvйnient est que le repaint clignote un peu dans ce cas. :(
      ListView1.Repaint;
     end;
 end;

 inherited;
end;



--------------------
PM WWW ICQ Skype Jabber   Вверх
Alexeis
Дата 14.10.2009, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



Цитата(Alca @  14.10.2009,  21:41 Найти цитируемый пост)
procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY; //эту строку??????????

Это механизм обработки виндовых сообщений. Его аналог в билдере делается через
Код

BEGIN_MESSAGE_MAP
...
MESSAGE_HANDLER(<сообщение Windows>, <тип сообщения>, <имя процедуры обработчика>)
...
END_MESSAGE_MAP(<класс-родитель>)


В делфи сообщение связывается с обработчиком прям в объявлении функции. В Билдере сначала функция, затем макрос BEGIN_MESSAGE_MAP внутри класса формы обычно.

Код

 case Message.NMHdr.code of          //эту строку??????????
    HDN_ITEMCHANGED, HDN_ITEMCHANGING:

Код

switch (Message.NMHdr.code)
{
case HDN_ITEMCHANGED : 
case HDN_ITEMCHANGING : 
  {
  .....
   break;
  }
}


 case Message.NMHdr.code of -> switch

HDN_ITEMCHANGED, HDN_ITEMCHANGING: означает что при любом из событий, в С++ это будет 2 кэйса без брейков, так чтобы оба выполняли тот же код.

Добавлено через 59 секунд
  По поводу сообщений вот пример
Код

class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TLabel *Label1;
private:
public:        // User declarations
        __fastcall TForm1(TComponent* Owner);

protected:
void __fastcall WmRButtonDown(TWMRButtonDown& Msg);
void __fastcall WmRButtonUp(TWMRButtonUp& Msg);
virtual void __fastcall RMouseClick(TObject* Sender);
virtual void __fastcall RMouseDown(TObject* Sender);
virtual void __fastcall RMouseUp(TObject* Sender);
bool fMouseDown;
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_RBUTTONDOWN,TWMRButtonDown,WmRButtonDown)
MESSAGE_HANDLER(WM_RBUTTONUP,TWMRButtonUp,WmRButtonUp)
END_MESSAGE_MAP(TForm);
};



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alca
Дата 14.10.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Спасибо. Буду пробывать.

Добавлено через 1 минуту и 55 секунд
ах да.... забыл еще про это:
Код

...
 inherited;
end;
???



--------------------
PM WWW ICQ Skype Jabber   Вверх
mrbrooks
Дата 15.10.2009, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Alca @  14.10.2009,  22:55 Найти цитируемый пост)
забыл еще про это:


как ща помню:
Код

TForm::Dispatch(&Message); 

PM MAIL   Вверх
Alexeis
Дата 15.10.2009, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



inherited; это вызов одноименной функции предка.
например 
Код

TForm::WMNotify(&Message);


mrbrooks, а что  делает TForm::Dispatch(&Message); ? Передает выполнение обработчику по умолчанию? 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
mrbrooks
Дата 15.10.2009, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Alexeis @  15.10.2009,  09:15 Найти цитируемый пост)
Передает выполнение обработчику по умолчанию?  

Ага. Обработка сообщений по умолчанию.
PM MAIL   Вверх
Alca
Дата 15.10.2009, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



http://cppbuilder.ru/articles/0100.php
Цитата

Замена inherited в C++Builder

Часто в коде Delphi, особенно в оконных процедурах и картах сообщений, встречается строка
inherited;

которая означает обработку сообщений по умолчанию.

Ее аналогом в CBuilder является вызов
Код

TForm::Dispatch(&Message);




--------------------
PM WWW ICQ Skype Jabber   Вверх
Alexeis
Дата 15.10.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



inherited в делфи это не означает обработку сообщений по умолчанию. Это лишь частное применение. В общем случае это просто вызов перегруженной унаследованной функции предка. Например вызов конструктора предка при создании объекта. Для обработчиков сообщений смысл несколько другой, даже если имя отличается, то будет вызван обработчик того же сообщения. Не уверен правда что будет вызвано если таковой обработчик будет отсутствовать у предка... наверное тот же Dispatch.
inherited - переводиться как унаследованный. В другом контексте нежели обработчиков замена нельзя заменять на Dispatch.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.