Школоло / Говнокод #3298 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
var
  resStream: TResourceStream;
  memStream: TMemoryStream;
  DLL: THandle;
  tempFile: string;

  excel: variant;
  wbook: OLEVariant;
begin
  if not IsOLEObjectInstalled('Excel.Application') then
    begin
      MessageBox(Handle, PChar('Для открытия фаблонов форм необходимо установить'+#13+
                               'Microsoft Excel'), 'Ошибка загрузки формы.', MB_ICONINFORMATION);
      exit
    end;
  tempFile := extractFilePath(paramStr(0))+'DATA\PLUGINS\$temp$.xxx';
  if ListView1.Selected = nil then exit;
  if not FileExists(ListView1.Selected.SubItems.Strings[2]) then exit;
  DLL := loadLibrary(PChar(ListView1.Selected.SubItems.Strings[2]));
  if DLL = INVALID_HANDLE_VALUE then begin
                                       freeLibrary(DLL);
                                       exit
                                     end;
  resStream := TResourceStream.Create(DLL, 'FORMA', MakeIntResource(10));
  memStream := TMemoryStream.Create;
  memStream.LoadFromStream(resStream);
  if fileExists(tempFile) then deleteFile(tempFile);
  memStream.SaveToFile(tempFile);
  setFileAttributes(PChar(tempFile), FILE_ATTRIBUTE_HIDDEN or
                                     FILE_ATTRIBUTE_TEMPORARY);
  memStream.Free;
  resStream.Free;
  freeLibrary(DLL);

  excel := createOLEObject('Excel.Application');
  excel.Visible := TRUE;
  wbook := excel.Workbooks.Open(tempFile)
end;

когда-то кому-то в дипломнике вот такое написал. с понтом - подключаем плагины и они в эксель выводят программно новые виды форм. хотя экселевский файл тупо вкомпилен в ресурс библиотеки

Запостил: ganja_boy ganja_boy, (Updated )

Комментарии (10) RSS

  • MessageBox(Handle, PChar(...), ...)
    ListView1.Selected
    Автору надо или трусы надеть или крест снять.
    Ответить
    • Мне так приходилось делать. Чтобы в процедуру передавать компонент, в заголовок которого выводится какая-то информация о процессе обработки. В общем, передавать TCaption нельзя, передавать обобщённый TComponent не вышло, так как у одних текст - это Caption, у других - Text, у третьих такого свойтства нет (хотя у самого окна есть). Ничего лучше передачи хэндла не подошло.
      Ответить
      • а как в дельфи с ретроспекцией (отражением)? что бы определить, у кого Caption у кого Text

        а вообще за такую неоднородность делал бы с разрабами что нибудь плохое, пока бы не взялись за ум
        Ответить
        • >>>ретроспекцией

          facepalm.php
          хоть бы не позорился банальнейшим незнанием терминологии
          Ответить
  • MessageBox(Handle, PChar(...), ...) - че не так-то?
    Handle - глобальный хендл окна формы. мессаджбокс будет от него. PChar(...) какбэ приведение типов. коряво, ну а че такого-то?
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8