Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Выделение файлов через один
Goto page Previous  1, 2, 3 ... 9, 10, 11
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Sat Jul 02, 2016 14:24    Post subject: Reply with quote

LonerD wrote:
Это в ТС9 появилось?

Нет, дефолтные возможности ListBox, работает и в 8.52а, а в ТС9 только удобнее получить дескриптор списка.

Апать не вижу смысла, ибо сложность с LB_* улавливаю (да и режимом эскизов не пользуюсь).
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1011
Location: Донецк

Post (Separately) Posted: Thu Aug 04, 2016 01:01    Post subject: Reply with quote

Благодаря новым возможностям ТС9 удалось значительно сократить и оптимизировать скрипт.

Code:
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Total Commander DreamLair
; Script: Zebra file selection
; Скрипт: Выделение файлов зеброй
; Script version: 4.0 (2016.08.04)
; Required: Total Commander 9.0+
; Script author: LonerD
; Made in Donetsk People's Republic
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Parameters:
;    1) Selection mode:
;       1 - all; 2 - only files; 3 - only dirs
;    2) Selection position:
;       1 - begin from first file; 2 - from second etc
;       0 - begin from file under cursor
;    3) Selection range:
;       2 - each second file, 3 - each third file etc
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Параметры:
;    1) Метод выделения:
;       1 - всё; 2 - только файлы; 3 - только каталоги
;    2) Позиция выделения:
;       с какого файла начинать (с первого, второго и т.д...)
;       0 - начинать с файла под курсором
;    3) Порядок выделения:
;       2 - каждый второй файл, 3 - каждый третий и т.д....
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#NoEnv
#NoTrayIcon
#MaxMem 1024
#SingleInstance force
SetBatchLines, -1

Mode = %1%
First = %2%
Range = %3%

If 0 < 3
  Range = 2
If 0 < 2
  First = 1
If Mode not in 1,2,3
  Mode = 1

If not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
  ExitApp
WinGet, hw_TTOTAL_CMD, ID, ahk_class TTOTAL_CMD
  global hw_TTOTAL_CMD

ClipSaved := ClipboardAll
Clipboard := ""

DllCall("LockWindowUpdate", "uint", hw_TTOTAL_CMD)

SendMessage, 1075, 524,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 1075, 330 . Mode,,, % "ahk_id " hw_TTOTAL_CMD

TCAPanel := SendMessageTC(1074, 1000, 0, A)
hw_TCAPanel := SendMessageTC(1074, 8+TCAPanel, 0, A)

SelItems := SendMessageTC(1074, 1004+TCAPanel, 0, A)
if ( SelItems = 0 )
  Goto, Exit

SendMessage, 1075, 2018,,, % "ahk_id " hw_TTOTAL_CMD
FileList := Clipboard
Clipboard := ""

ControlGetText, TCAPanelPath,, % "ahk_id " hw_TCAPanel
TCAPanelPath := StrReplace(TCAPanelPath, "\*.*", "\")
FileList := StrReplace(FileList, TCAPanelPath)
IsUpDir := SendMessageTC(1074, 1008+TCAPanel, 0, A)

if ( First = 0 )
{
  FirstFile := SendMessageTC(1074, 1010+TCAPanel, 0, A)
  FirstSelFile := SendMessageTC(1074, 1006+TCAPanel, 0, A)

  if (( Mode = 3 ) & ( FirstSelFile >= FirstFile ))
  {
    SendMessage, 1075, 524,,, % "ahk_id " hw_TTOTAL_CMD
    Goto, Exit
  }
  else if ((( FirstSelFile = 0 ) & ( IsUpDir = 1)) || (( Mode = 2 ) & ( FirstSelFile < FirstFile )))
    FirstSelFile := 1
}
else
  FirstSelFile := First

FileListSel := ""
Loop, Parse, FileList, `n, `r
{
  if ( Mod(A_Index - FirstSelFile + IsUpDir,Range) = 1 )
    FileListSel := FileListSel "`r`n" A_LoopField
}

Clipboard := FileListSel
SendMessage, 1075, 2033,,, % "ahk_id " hw_TTOTAL_CMD

Exit:
Clipboard := ClipSaved
ClipSaved := ""
FileList := ""
FileListSel := ""
DllCall("LockWindowUpdate", "uint", 0)
ExitApp

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SendMessageTC(TCMsg, wParam, lParam, aControl)
{
  SendMessage, % TCMsg, % wParam, % lParam, % aControl, % "ahk_id " hw_TTOTAL_CMD
  return ErrorLevel
}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


_________________
Total Commander DreamLair - мечтать всегда, мыслить тотально, быть командиром жизни
Win10 x64 HE SL Eng | TC DreamLair v2018 eternal pre-α (9.0a x32+x64) | AkelPad Lair v2018α (4.9.9 x86) | Slimjet Lair v2018α
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Thu Aug 04, 2016 14:29    Post subject: Reply with quote

LonerD
LB_SETSEL не пробовал? Попробовал ради любопытства - у меня не срабатывает.
Back to top
View user's profile Send private message
Totas



Joined: 05 Sep 2015
Posts: 22

Post (Separately) Posted: Sun Feb 05, 2017 10:33    Post subject: Выделение файлов через один Reply with quote

Как выделить папки через один, но не скриптом, а плагином (каким)? Скрипт не знаю куда вписывать.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 8504
Location: Россия, Саратов

Post (Separately) Posted: Sun Feb 05, 2017 10:47    Post subject: Reply with quote

Totas
А плагин вы знаете, куда вписывать? Не говоря про то, что не бывает плагинов для этой задачи, полностью заменяющих скрипты. И надобности в них нет никакой. А для тех, кто не знает, что куда вписывать, есть материалы форума, включая эту тему и памятку по скриптам в "Автоматизации". См. здесь. Опять та же история?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2103

Post (Separately) Posted: Sun Feb 05, 2017 16:07    Post subject: Reply with quote

Totas
Поэкспериментируйте с плагином Misc. В диалоге поиска (Alt+F7) на вкладке "Плагины" нужно задать параметры
Плагин: misc
Свойство: odd
Операция: =
Значение: Да
и на вкладке "Шаблоны поиска" сохранить шаблон (назовём его odd).
После этого из расширенного русского меню или из кнопки вызывать команду для выделения группы папок (cm_SelectFolders - Выделить группу: только папки) и выбирать созданный ранее шаблон >odd. В девятой версии тотала можно просто завести кнопку с командой selectfilesd >odd.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 9, 10, 11
Page 11 of 11

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group