PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка


Вопросы новичка

Сообщений 571 страница 600 из 1000

571

Попробуй вот так

Код:
Path.s="guitar_sample.mid"

If OpenWindow(0, 100, 100, 100, 100, "Beispiel: MP3 Abspielen", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget) 
  ButtonGadget(11,20,20,20,20,"")
  Buffer$=Space(128) 
  
  
  Repeat 
    EventID.l = WaitWindowEvent() 
    
    If EventID = #PB_Event_CloseWindow  ; If the user has pressed on the close button 
      mciSendString_("CLOSE MIDI",0,0,0) 
      Quit = 1 
    EndIf
    If  EventID=#PB_Event_Gadget
      If EventGadget()=11
        mciSendString_("CLOSE MIDI",0,0,0) 
        mciSendString_("OPEN "+Path+" TYPE SEQUENCER ALIAS MIDI",@Buffer$,128,0) 
        mciSendString_("PLAY MIDI",0,0,0)
      EndIf
    EndIf
    
  Until Quit = 1 
EndIf

0

572

Благодарю!

0

573

Возможно ли в ListIconGadget добавить иконки справа от записи как это есть в тотале командер. И второй вопрос: (если его решить, то возможно первый отпадет): можно ли в ExplorerListGadget добавлять Item-ы? типа как в тотале когда подключаешься по Ftp

Отредактировано daiomik (06.08.2010 14:13:00)

0

574

daiomik написал(а):

Возможно ли в ListIconGadget добавить иконки справа от записи

Можно

Код:
If OpenWindow(0, 100, 100, 300, 100, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   ListIconGadget(0, 5, 5, 290, 90, "Name", 100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
   AddGadgetItem(0, -1, "  1", ExtractIcon_(0,GetSystemDirectory()+"\sendmail.dll",0))
   AddGadgetItem(0, -1, "  2", ExtractIcon_(0,GetSystemDirectory()+"\shell32.dll",2))
   Repeat
     Event = WaitWindowEvent()
   Until Event = #PB_Event_CloseWindow
 EndIf
daiomik написал(а):

можно ли в ExplorerListGadget добавлять Item-ы?

AddGadgetItem не работает, так что только с помощью API.

0

575

Пётр написал(а):

Можно

благодарю

Пётр написал(а):

AddGadgetItem не работает, так что только с помощью API.

не, API сложно, поэтому  ListIconGadget-ом обойдусь

0

576

daiomik написал(а):

как в тотале когда подключаешься по Ftp

Вот пример получения иконок связанных с расширением.
Думаю что понадобится

Код:
Structure Info 
 Part.s    ; Расширение файла 
 IconID.l  ; Идентификатор иконки, связанной с расширением 
EndStructure 

Global NewList Part_IconID.Info() 
AddElement(Part_IconID() )

Procedure.s GetSysDirectory() ; Путь к системной папке
 Path.s=Space(500)
 GetSystemDirectory_(@Path,500)
 ProcedureReturn Path
EndProcedure
 
Part_IconID()\Part="dir" ; Это иконка папки 
Part_IconID()\IconID=ExtractIcon_(0,GetSysDirectory()+"\SHELL32.dll",3) 


Procedure GetExtension_Icon(Extension.s, size.l) 
  Protected Info.SHFILEINFO, StandardIcon.l, flags.l 
  
  StandardIcon = 0 
  
  If Size = 0 
    flags = #SHGFI_USEFILEATTRIBUTES | #SHGFI_ICON | #SHGFI_SMALLICON 
  Else 
    flags = #SHGFI_USEFILEATTRIBUTES | #SHGFI_ICON | #SHGFI_LARGEICON 
  EndIf 
  
  If SHGetFileInfo_("." + extension, #FILE_ATTRIBUTE_NORMAL, @Info.SHFILEINFO, SizeOf(SHFILEINFO), flags) 
    StandardIcon = Info\hIcon 
  Else 
    If Size = 0 
      ExtractIconEx_("shell32.dll", 0, 0, @StandardIcon, 1) 
    Else 
      ExtractIconEx_("shell32.dll", 0, @StandardIcon, 0, 1) 
    EndIf 
  EndIf 
  
  ProcedureReturn StandardIcon 
EndProcedure 

Procedure GetIcon(Part.s) 
 Shared Part_IconID() 
  
 Part=LCase(Part) 
  
 ForEach Part_IconID() 
   If Part=Part_IconID()\Part ; Данные о расширенни найдены 
    ProcedureReturn Part_IconID()\IconID 
   EndIf 
 Next 
  
 ; Данных о расширении нет, поэтому загружаем иконку 
  IconID=GetExtension_Icon(Part, 0) 
  AddElement(Part_IconID() ) 
  Part_IconID()\Part=Part 
  Part_IconID()\IconID=IconID 

ProcedureReturn IconID 
EndProcedure 


If OpenWindow(0, 100, 100, 300, 140, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   ListIconGadget(0, 5, 5, 290, 130, "Name", 100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
   AddGadgetItem(0, -1, "Папка", GetIcon("dir") )
   AddGadgetItem(0, -1, "rar", GetIcon("rar") )
   AddGadgetItem(0, -1, "txt", GetIcon("txt") )
   AddGadgetItem(0, -1, "pb", GetIcon("pb") )
   Repeat
     Event = WaitWindowEvent()
   Until Event = #PB_Event_CloseWindow
 EndIf

0

577

Пётр написал(а):

Думаю что понадобится

конечно понадобится..ломал голову как это дело происходит..буду подробно изучать..

0

578

Пётр
У меня есть ScrollAreaGadget, в нём N-ное количество кнопок ButtonImageGadget-вопрос
1)Как сделать множественный выбор(нажатие) этих кнопок через контрл(Ctrl)
2)Возможно ли зажав правую кнопку мыша, выделить и нажать эти кнопки
3)Как мышом, зажав правую кнопку, вывести эти кнопки за пределы окна(гаджета), т.е. удалить

p.s. всё это с учетом linux

0

579

lakomet написал(а):

всё это с учетом linux

Незнаю.

0

580

Петр! Есть ли возможность изменить фон EditorGadget и ListViewGadget ?   Мечтается вообще картинку фоном для этих гаджетов.

0

581

В Кодархиве есть примеры для ListIconGadget (ListIcon_BackgroundImage.pb) и ListViewGadget (ListView_BackgroundImage.pb), правда, последний не компилируется из-за отсутствия функции CallCom() из какой-то библиотеки.

А изменить фоновый цвет можно с помощью SetGadgetColor с флагом #PB_Gadget_BackColor

0

582

С ListIconGadget  нормально, если не выйдет ListViewGadget , тогда поменяю гаджет. Только бы с EditorGadget пролезло тоже...  В любом случае спасибо за подсказку.  :cool:

0

583

Пётр
Вот здесь walker объяснил как использовать мышь, но я ни чего непонял(корявый перевод гугля). Можете показать пример как это можно использовать?

0

584

Пётр написал(а):

Вот пример получения иконок связанных с расширением.Думаю что понадобится

На втором форуме откопал код получения иконки, подправил его, но не пойму, почему там только папки отображаются..Может если переделать, то этот код логичней взять, чем тот который ты привел...(тот подходит, но хочется разобраться с этим). И если не сложно объясни как эта API команда (SHGetFileInfo_) работает:

Код:
If OpenWindow(Window_0, 216, 0, 181, 203, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    ListIconGadget(ListIcon_0, 10, 10, 160, 180, "Файл", 150)
EndIf
If SHGetFileInfo_(GetTemporaryDirectory() + FileName$, 0, @sh.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_TYPENAME|#SHGFI_SHELLICONSIZE|#SHGFI_SYSICONINDEX|#SHGFI_DISPLAYNAME|#SHGFI_ICON|#SHGFI_SMALLICON)
    AddGadgetItem(ListIcon_0, -1, FileName$, sh\hIcon)
    AddGadgetItem(ListIcon_0, -1, "primer.exe", sh\hIcon)
EndIf
Repeat
event=WaitWindowEvent()
Until event=#PB_Event_CloseWindow

0

585

lakomet написал(а):

Вот здесь walker объяснил как использовать мышь, но я ни чего непонял

Тоже не совсем понял...
Видимо он объяснил как получить сообщение о клике по объекту, скажем, по гаджету.
У меня сейчас нет линукса под рукой, поэтому проверить не могу.
Попробуй сделать так

Код:
Procedure yourProcedureName(*widget, *event, *user_data) 
Debug *event
;
;
EndProcedure

OpenWindow(0,0,0,200,100,"",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
StringGadget(0,10,40,180,20,"")

g_signal_connect_object_(GadgetID(0),"button-release-event",@yourprocedurename(),#Null,#Null)

Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
daiomik написал(а):

но не пойму, почему там только папки отображаются

Потому что указан путь к папке.
Попробуй так

Код:
If OpenWindow(Window_0, 216, 0, 181, 203, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    ListIconGadget(ListIcon_0, 10, 10, 160, 180, "Файл", 150)
EndIf
If SHGetFileInfo_("C:\WINDOWS\explorer.exe", 0, @sh.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_TYPENAME|#SHGFI_SHELLICONSIZE|#SHGFI_SYSICONINDEX|#SHGFI_DISPLAYNAME|#SHGFI_ICON|#SHGFI_SMALLICON)
    AddGadgetItem(ListIcon_0, -1, FileName$, sh\hIcon)
    AddGadgetItem(ListIcon_0, -1, "primer.exe", sh\hIcon)
EndIf
Repeat
event=WaitWindowEvent()
Until event=#PB_Event_CloseWindow
daiomik написал(а):

И если не сложно объясни как эта API команда (SHGetFileInfo_) работает

В двух словах:
SHGetFileInfo получает информацию об объекте в файловой системе, например, файле, папке, или диске.

0

586

Пётр написал(а):

Потому что указан путь к папке.

вообще ничего не добавляется в лист икон...

0

587

Путь правильный C:\WINDOWS\explorer.exe

0

588

daiomik написал(а):

вообще ничего не добавляется в лист икон...

с путем ошибся..все ок.

0

589

Пётр
Пишет такую бяку  GLib-GObject (WARNING): /build/buildd/glib2.0-2.24.1/gobject/gsignal.c:2273: signal `b' is invalid for instance `0x93b0020'  и выделяет строку восклицательным знаком.
Мне бы  понять принцип работы с API linux :disappointed: , а дальше методом тыка разберусь. :unsure:

0

590

Подскажите как добавлять значки в программе чуть левее от закрыть (красный крестик), свернуть...Видел во многих прогах присутствие таких значков, например для закрепления проги над всеми другими и тп.

0

591

Где-то я видел пример.
Если найду - выложу.

0

592

Можно ли как нибудь записать в файл сразу несоклько строк? А то повторять постоянно WriteString() - это долго

0

593

Если строки в массиве или в динамическом списке или в гаджетах, типа EditorGadget, ListIconGadget, ListviewGadget, то это можно сделать в цикле с помощью одного вызова функции WriteString().

0

594

а вот такой вопрос: я просто перечислил подряд несколько команд WriteString(). Затем открыл получившийся файл и увидел, что все что я записывал получилось в одну строку..а мне нужно что бы с каждой строки

0

595

Используй WriteStringN()

0

596

Спасибо!

0

597

Как определить путь запущенной проги?

0

598

Код:
Debug ProgramFileName()

0

599

То что нужно)

0

600

Как избавиться от мерцания панели при передвижении сплиттера?? Смарт виндовс фреш не помогает((

Код:
; German forum: http://www.purebasic.fr/german/viewtopic.php?t=93&highlight=
; Author: Hellboy (corrected by Franky, updated for PB 4.00 by Andre)
; Date: 13. September 2004
; OS: Windows
; Demo: Yes

#WindowWidth  = 800
#WindowHeight = 600

If OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, "PureBasic - Menu", #PB_Window_SystemMenu)

  If CreateMenu(0, WindowID(0))
    MenuTitle("Datei")
    MenuItem( 1, "Цffnen...")
    MenuItem( 2, "Speichern")
    MenuItem( 3, "Speichern unter...")
    MenuItem( 4, "Beenden")
  EndIf

  If CreateToolBar(0, WindowID(0))
    ToolBarStandardButton(0, #PB_ToolBarIcon_New)
    ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
    ToolBarStandardButton(2, #PB_ToolBarIcon_Save)

    ToolBarSeparator()

    ToolBarStandardButton(4, #PB_ToolBarIcon_Find)
    ToolBarToolTip(0, 4, "Titel Suchen")

    ToolBarSeparator()
  EndIf

  ;************************************************************************
  If CreateGadgetList(WindowID(0))
    ScrollAreaGadget(0, 0, 0, 400, 400, 1000, 1000, 1)
    CloseGadgetList()

    PanelGadget(1, 0, 0, 400, 400)
    For k=0 To 3
      AddGadgetItem(1, -1, "Line "+Str(k))
      ButtonGadget(12+k, 10, 10, 100, 20, "Test"+Str(k))
    Next
    CloseGadgetList()
    SplitterGadget(5, 0, 25, #WindowWidth, #WindowHeight-25, 0, 1, #PB_Splitter_Vertical)
    SetGadgetState(5, 500)
  EndIf
  ;***************************************************************************

  Repeat

    EventID.l = WaitWindowEvent()

    If EventID.l = #WM_CLOSE
      quit = 1
    EndIf

  Until quit = 1

EndIf

End

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка