Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по компонентам для Delphi, C++ Builder разных версий

Модерирует : ShIvADeSt

ShIvADeSt (26-06-2017 02:39): Продолжение тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=14667
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение раздела http://forum.ru-board.com/topic.cgi?forum=33&topic=6607&start=0  
Ссылки приветствуются.

См. также:

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 07:33 20-06-2007 | Исправлено: XPerformer, 14:41 24-10-2013
reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
так вроде бесплатная alphaskins есть для таких дел, нет?
 
 

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 18:06 12-06-2013 | Исправлено: reenoip, 18:07 12-06-2013
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто использует DiXML?
Есть вопрос.
Запускаю два разных потока. В них используется экспорт в XML.
Много утечек памяти.
Но если запускать один из потоков, то утечек нет.
Может есть какие-нибудь нюансы при работе с DiXML в потоках (thread)?

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:38 13-06-2013
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
reenoip
да хотелось без скинов , но через API не все віходит как хочу или же не то делаю

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 09:09 14-06-2013
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Кто использует DiXML?
Есть вопрос.
Запускаю два разных потока. В них используется экспорт в XML.
Много утечек памяти.
Но если запускать один из потоков, то утечек нет.
Может есть какие-нибудь нюансы при работе с DiXML в потоках (thread)?

 
 
Я понял.
Функции инициализации и очистки DIXML нужно использовать 1 раз.
 
Таким образом, я в главном модуле приложения добавил
 

Код:
initialization
         xmlInitParser; // Initialize the DIXml library.
         xmlInitGlobals;//Additional initialisation for multi-threading
 
finalization
        xmlCleanupParser; // Clean up global DIXml variables.
        xmlCleanupGlobals;//Additional Clean up for multi-threading

 
 
 
Почему в главном модуле?
Потому что в главном модуле у меня запускаются и освобождаются оба потока.

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:22 14-06-2013
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FlexCel v5. как вывести данные из датасета с итогами?  
 
в v3 были визуальные компоненты: дизайнер и тд. сейчас ничего нет. в документации и demo не нашел работу с датасетом. киньте ссылку на код или демку.

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 13:24 17-06-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
 
В смысле? Как зафигачить датасет в spreadsheet и сделать по нему итоги?

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 17:12 18-06-2013
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ подсобите перевести код на билдер
 

Код:
cmbVisualStyle.Properties.BeginUpdate;
  AddSkinsFromFile(LocalPath + 'Skins.skinres');
  cmbVisualStyle.Properties.EndUpdate;
   
  procedure TfrmOptions.AddSkinsFromFile(const AFileName: string);
var
  AStream: TStream;
begin
  AStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyNone);
  try
    AddSkinsFromStream(AStream, AFileName, 0);
  finally
    AStream.Free;
  end;
end;
 
function TfrmOptions.GetIsInternalSkin(ASkinDetails: TdxSkinDetails): Boolean;
begin
  result := ASkinDetails.GroupName = '';
end;
 
procedure TfrmOptions.AddSkinsFromStream(AStream: TStream; const ASkinResName: string; ASkinResInstance: HINST);
var
  AReader: TdxSkinBinaryReader;
  I: integer;
begin
 
  try
    AReader := TdxSkinBinaryReader.Create(AStream);
    try
      for I := 0 to AReader.Count - 1 do
      begin
        if not GetIsInternalSkin(AReader.SkinDetails[I]) then
        begin
          AddSkin(AReader.SkinDetails[I]);
        end;
      end;
    finally
      AReader.Free;
    end;
  finally
 
  end;
end;
 
 
procedure TfrmOptions.AddSkin(ASkinDetails: TdxSkinDetails);
var
  ABitmap, ABitmapInDropDown: TBitmap;
  FSkinIconSize, FSkinIconSizeInDropDown: TdxSkinIconSize;
begin
  FSkinIconSize := sis16;
  FSkinIconSizeInDropDown := sis48;
  // ASkinDetails.GroupName
  ABitmap := ASkinDetails.Icons[FSkinIconSize].GetAsBitmap;
  ABitmapInDropDown := ASkinDetails.Icons[FSkinIconSizeInDropDown].GetAsBitmap;
  try
    imglSkinSmall.Add(ABitmap, nil);
    imglSkinLarge.Add(ABitmapInDropDown, nil);
    with cmbVisualStyle.Properties.Items.Add do
    begin
      Value := ASkinDetails.Name;
      Description := ASkinDetails.DisplayName;
      ImageIndex := Index + 1;
    end;
 
  finally
    ABitmapInDropDown.Free;
    ABitmap.Free;
  end;
end;
 
object cmbVisualStyle: TcxImageComboBox
  Left = 28
  Top = 220
  Properties.Images = imglSkinSmall
  Properties.Items = <>
  Properties.LargeImages = imglSkinLarge
  TabOrder = 5
  Width = 407
end
 

или может можно как-то проще
Есть папка со скинами *.skinres - можно как-то на форме вывести пред-осмотр етих скинов , как ето реализовано для рибона. Нарисовать кучу картинок не прикольно????  
Надо реализовать dxSkinChooserGalleryItem только на форме с разбивкой по группам и тд.

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 12:53 19-06-2013
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks

Цитата:
В смысле? Как зафигачить датасет в spreadsheet и сделать по нему итоги?

да.

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 13:21 19-06-2013
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помощи не дождешься, пришлось самому писать
вот может кому пригодится и проще чем в примере с оффсайта

Код:
//---------------------------------------------------------------------------
void TForm1::LoadSkinInfo(AnsiString SkinFolder,TdxGalleryControl *Gallery)
{
TSearchRec sr;
AnsiString SkinNane,SkinGroupName;
int KlGroup=0;
int GroupIndex;
 
if (FindFirst(SkinFolder+"\\*.skinres", faAnyFile, sr) == 0)
        {
        do
        {
TBitmap *SkinIcon = new TBitmap();
TStream* AStream= new TFileStream(SkinFolder+"\\"+sr.Name,fmOpenRead | fmShareDenyWrite);
TdxSkinBinaryReader *AReader = new TdxSkinBinaryReader(AStream);
 
SkinGroupName=AReader->SkinDetails[0]->GroupName;
SkinNane=AReader->SkinDetails[0]->DisplayName;
SkinIcon=AReader->SkinDetails[0]->Icons[sis48]->GetAsBitmap();
 
 
    for (int i = 0; i < Gallery->Gallery->Groups->Count; i++)
    {
        if (Gallery->Gallery->Groups->Groups[i]->Caption==SkinGroupName)
        {
        KlGroup++;
        GroupIndex=i;
        }
    }
 
 
if (KlGroup==0)
    {
    Gallery->Gallery->Groups->Add();
    Gallery->Gallery->Groups->Groups[Gallery->Gallery->Groups->Count-1]->Caption=SkinGroupName;
    GroupIndex=Gallery->Gallery->Groups->Count-1;
    }
TdxGalleryControlItem *AItem = Gallery->Gallery->Groups->Groups[GroupIndex]->Items->Add();
AItem->Glyph->Assign(SkinIcon);
AItem->Caption = SkinNane;
AItem->Name=sr.Name.SubString(1,sr.Name.Pos(".")-1);
 
 
delete AStream;
delete AReader;
 
        } while (FindNext(sr) == 0);
        FindClose(sr);
        }
 
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
LoadSkinInfo(Edit1->Text,dxGalleryControl123);
}
//---------------------------------------------------------------------------
 

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 17:10 19-06-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
 
SkinIcon=AReader->SkinDetails[0]->Icons[sis48]->GetAsBitmap();  
 
^--вот в этом, как я понимаю, вся суть предпросмотра?)
 
neznayka3
 
Все зависит от того, как именно фигачить датасет в Эксель.  
Есть два принципиальных пути:  
1) из кода на дельфи заполнить лист экселя данными;
2) подтянуть табличку/запрос с данными прямо в эксель (Данные - Подключить внешние данные), чтобы данные фетчил сам эксель прямо из источника данных (ADO/ODBC или еще чего там Эксель напрямую понимает);
 
Первый путь тривиальный - любимым DACом открываете датасет и циклом фигачите записи по строкам в лист экселя. Можно через COM-объекты экселя делать, или через любимый FlexCel. Потом добавляете формулы с итогами.
 
Второй путь чуть сложнее. Я бы рекомендовал сначала изучить как именно Эксель подтягивает "живые" данные через UI-интерфейс, потом бы записал экселевский макрос для настройки этих данных и обновления их, а потом - по коду макроса сделал бы аналогичный код через Delphi (COM-объекты Экселя). Если хочется задействовать FlexCel, то можно попытаться открыть такую книгу Экселя в API Mate, но я не уверен что FlexCel работает с внешними данными. А может и работает!..
 
Что непонятно - спрашиваем / уточняем

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 17:56 19-06-2013 | Исправлено: deks, 17:57 19-06-2013
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks

Цитата:
2)  

нет. юзеры не будут этого делать.

Цитата:
Если хочется задействовать FlexCel

да. в FlexCel v3 было просто, написал шаблон, загрузил и все. в 5 и 6 версии не так. не могу найти ни одного примера как работать с датасетом. про COM в курсе, так и пишу, но долго.  
 
ps читал у них на сайте про миграцию с 3 на 5

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 18:37 19-06-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
 

Цитата:
нет. юзеры не будут этого делать.  

 
Какие юзеры? Кодом настроить импорт данных из внешнего источника, кодом же их получить, кодом же добавить итоги! Это, кстати, самый быстрый способ залить данные в Эксель.

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 18:50 19-06-2013
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks
ни разу не пробывал тянуть прямо из excel. но похоже при смене, запроса/бд/хоста, надо править шаблон. вопрос про FlexCel.

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 18:57 19-06-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
 
Не могу щас попробовать на компе (на маке есть MS Office, но нету установленных ODBC драйверов, на Win vm нету MS Office). В общем, там тема такая: В Экселе выбираем пункт меню "Данные - Получить внешние данные". Там создаем новый или подсовываем существующий connection к источнику данных. Далее ЭКсель самостоятельно и довольно быстро "затягивает" данные внутрь и помещает их на лист. К данным можно прикрепить итоги.
 
Естественно, все то, что делает Эксель при манипуляциях через UI, можно сделать через COM-объекты из кода. Для того, чтобы понять этот код, мы делаем "Запись макроса". Начинаем запись, делаем нужные нам действия через UI и после окончания всех действий получаем код на VisualBasic, который нужные действия воспроизводит. Потом этот код на VisualBasic несложно прикрутить к Delphi для работы с COM-объектами экселя. Но да, для работы этой схемы потребуется установленный MS Excel на компе. Впрочем, это самый быстрый способ: через COM идет только команда на загрузку шаблона и обновление данных - а дальше все делается экселем и быстро, "пачкой" загружая данные.
 
При изменении бд/хоста можно просто поправить нужный connection. При смене запроса щас с ходу не помню чего там происходит, но, по моему, запрос определяется через MS Query, и наверняка можно тоже тюнинговать запрос. Как именно это сделать легко нагуглить в MSDN.  Впрочем, тут проблемы со сменой количества полей, их именах и тп - скорее всего проще будет сделать новый connection/шаблон.  
 
По поводу FlexCel, у него есть приблуда APIMate, при открытии в которой готового excel  файла формируется код для "воссоздания" этого файла. Своеобразный DDL для xls/xlsx. ТАк вот - в этой приблуде можно попробовать открыть excel-файл с подключенными внешними источниками данных. Может FlexCel их и поддерживает!

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 19:12 19-06-2013 | Исправлено: deks, 19:13 19-06-2013
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
deks
да
SkinIcon=AReader->SkinDetails[0]->Icons[sis48]->GetAsBitmap();
sis48 - размер иконки
 
Добавлено:
По процедурке - есть ошибка
перед  
 delete AStream;
надо обнулять кол-во групп - иначе добавляется только одна группа
KlGroup=0;  
В идеале не помешала бы процедурка извлечения скинов из ресурсов формы
колупаю dxSkinChooserGallery.pas но пока ничего не выходит

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 08:51 20-06-2013
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
что-то ветка заглохла
Кто юзал TatukGis - что-то не могу разобраться - надо использовать карты гугля и желательно визикома - причем надо использовать как онлайн так и кеш
Ну и надо немного порисовать на картах - линии, прямоугольники,треугольники  разных цветов
Может у кого то есть пример??
И вопрос по TMS WebGMaps - можно загрузить карты в кеш ??? или он работает только с онлайн картами??

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 09:49 16-07-2013
G787



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
 TMS WebGMaps - можно загрузить карты в кеш

 
Ну это уже через соответствующий проксик нужно делать ... или ковырять нутро компонентов ... вроде как такой фичи нету. (во всяком случаи я не нашел)
 

Всего записей: 1035 | Зарегистр. 04-12-2005 | Отправлено: 14:08 16-07-2013
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
G787

Цитата:
Ну это уже через соответствующий проксик нужно делать

а подробнее моно??- что для етого нужно и как реализовать.
 

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 15:12 16-07-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
 
Делать кэш гугловских карт запрещено лицензией и TOSом. Соответственно такой фичи не может быть ни в одном компоненте.  
 
Любые варианты оффлайновых карт (на iOS) бывают или от вендоров (Гугла, Яндекса, 2gis) или на базе OSM.

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 15:46 16-07-2013
TechnoDreamer

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SAS.Планета кэширует, вроде нет у них проблем в гуглем. Хотя хз...

Всего записей: 259 | Зарегистр. 01-06-2008 | Отправлено: 18:34 16-07-2013
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по компонентам для Delphi, C++ Builder разных версий
ShIvADeSt (26-06-2017 02:39): Продолжение тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=14667


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru