eksperymenty z internetem, blogami, bloxem, javascriptem, firefoxem czy różnymi użytecznymi programami czy narzędziami, tak okołoinformatycznie tudzież okołokomputerowo...
wtorek, 01 marca 2005
Funkcja pozwala uruchomić dowolną zewnętrzną aplikację/program z poziomu Accessa i opcjonalnie czekać na jego zakończenie.
Ja tego często używam do wywołania zewnętrznych skryptów *.bat systemu operacyjnego w procedurach obsługi importu/exportu danych w Accesie.
Funkcja od SKowala, nieznacznie przerobiona

Najlepiej skopiować do nowego modułu.

Option Compare Database
Option Explicit

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, ByRef lpExitCode As Long) As Long
Private Declare Function GetInputState Lib "user32" () As Long

Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Public Sub RunProgram(ByVal strPrg As String, ByVal bWait As Boolean)
Dim pID As Long, lRet As Long, hProcess As Long

On Error GoTo blad
DoEvents
If Not FileExist(strPrg) Then MsgBox "Nie mogę znależć pliku " & strPrg, vbExclamation: Exit Sub
pID = Shell(strPrg, vbNormalFocus)
If bWait Then
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pID)
Do
GetExitCodeProcess hProcess, lRet 'Czy juz sie zakonczyl?
If GetInputState() Then DoEvents 'Pozwalamy na obsluge kolejki komunikatow, o ile takowe sa
Sleep 100 'Jesli sprawdzanie nie musi sie odbywac bardzo czesto, mozna tu wywolac funkcje Sleep z w miare krotkim czasem, np.:
Loop While lRet = STILL_ACTIVE
CloseHandle hProcess
End If
Exit Sub

blad:
MsgBox "Podczas uruchamiania aplikacji " & strPrg & " wystąpił błąd " & vbCrLf & Err.Number & " " & Err.Description
End Sub
piątek, 11 lutego 2005
funkcja sprawdza, czy wciśnięta na formularzu sekwencja klawiszy odpowiada zdefiniowanemu hasłu, przekazanemu jako parametr
ja tego używam na formularzach przy zdarzeniu On Key Press (Przy naciśnięciu klawisza). Wywołuję tym jakieś ukryte możliwości (np. jakiś konfigurator albo edycję ukrytych pól...)

Uwaga: właściwość formularza KeyPreview (Podgląd Klawiszy) musi być włączony na Yes/Tak.

Public Function VerifyPassword(passwd As String, KeyAscii As Integer) As Boolean
Static keycount As Integer
Dim prevcount As Integer
prevcount = keycount
If AscW(Mid(passwd, keycount + 1, 1)) = KeyAscii Then keycount = keycount + 1
If prevcount = keycount Then keycount = 0
If keycount = Len(passwd) Then VerifyPassword = True: keycount = 0
End Function
środa, 02 lutego 2005
Znajdź i zastąp, polecenie języka skryptowego vi:

składnia:

:pocz , koniec s / szukany_wyraz / nowy_wyraz / opcje_zamiany

pocz może być:
dowolna liczba - numer linii wiersza
. - bieżący wiersz
$ - koniec pliku

koniec może być:
dowolna liczba - numer linii wiersza
. - bieżący wiersz
$ - koniec pliku

(poczatek , koniec ) = % - cały plik

s jest obowiązkowe

szukany_ wyraz - wiadomo
nowy_wyraz - wiadomo

opcje_zamiany mogą być
g - global - wszystkie wystąpienia w wierszu
c - confirm - potwierdzenie pojedynczej zamiany


przykład:

:%s/stary/nowy/g - zastepuje w calym pliku wyraz stary na nowy bez potwierdzania kazdej zamiany w wierszu

funkcja zmieniająca właściwość SubdatasheetName tabel lokalnych z [Auto] na [None] co znacznie przyspiesza pracę z nimi...


Public Function SubDatasheetName_Auto2None()
On Error Resume Next
Dim tbl As TableDef, strName As String, prp As Property, i As Integer, isSubDSN As Boolean

i = 0
SysCmd acSysCmdInitMeter, "Changing SubDataSheet Names to [None]...", _
CurrentDb.TableDefs.Count
For Each tbl In CurrentDb.TableDefs
i = i + 1
If Not Left(tbl.Name, 4) = "MSys" And tbl.RecordCount <> -1 Then 'sprawdza tylko tablice NIESYSTEMOWE i NIE LINKOWANE (linkowane mają RecordCount = -1)
isSubDSN = False
For Each prp In tbl.Properties
If prp.Name = "SubDataSheetName" Then isSubDSN = True
Next prp
If Not isSubDSN Then
Set prp = tbl.CreateProperty("SubDataSheetName", dbText, "[None]")
tbl.Properties.Append prp
tbl.Properties.Refresh
End If
End If
SysCmd acSysCmdUpdateMeter, i
Next tbl
SysCmd acSysCmdRemoveMeter
End Function
środa, 26 stycznia 2005

sorry, w celach eksperymentacyjnych skopiowałem fragment bloga
css.blox.pl
Bo eksperymentuję z CSS...

W CSSie należy odnaleźć fragment "#BlogTytulBox" - to on jest odpowiedzialny za ramkę, w której wyświetla się tytuł bloga.

W standardowej skórce jego definicja wygląda tak:

{ background-image: url('/themes/1_default/images/kolo_pom.gif');
background-repeat: no-repeat;
background-position: top center;
background-color: #E56D38;
padding: 5px;
width: 710px;
margin-bottom: 5px
}

Jak ją modyfikować? Jeżeli interesujący nas obrazek załadujemy do "Zasobów", w pozycji "background-image: url" trzeba zmienić zawartość nawiasu wskazując jego adres, czyli wpisujemy ('../resource/nazwaobrazka.gif'). Dalsze parametry zależą od wyglądu obrazka. Jeśli jest mały i nadaje się do powtarzania, można usunąć wers "background-repeat: no-repeat;" - jak nietrudno się domyśleć, jego obecność powoduje nie powtarzanie obrazka, czyli tak jak u mnie - wyświetla się tylko raz. Gdybym usunęła ten wpis, obrazek powtarzałby się tyle razy ile zmieściłoby się w box'ie

"background-position: top center;" decyduje o wyrównaniu obrazka w pionie (pierwszy wpis) i poziomie (drugi). Możliwe pozycje to top, bottom i center - dla wyrównania pionowego i left, center, right - dla wyrównania poziomego. Ustalanie tych wartości ma sens w przypadku, gdy tło się nie powtarza. Jeśli wers "background-repeat: no-repeat" został usunięty, tło będzie wypełniało cały box, nie ma więc sensu stosować tych ustawień.

"background-color: #E56D38" to definicja koloru tła wokół naszego obrazka. Zmienianie jej w przypadku powtarzającego się obrazka również nie ma sensu, ponieważ całe tło jest zasłonięte.

"padding: 5px" określa odstęp jaki ma być zachowany wokół całego box'u. Można tą linijkę usunąć, wtedy nie będzie odstępu, można też 5 zamienić na 0 z takim samym efektem. Ilość pikseli można ustawić dowolną, ważne jednak, żeby nie przesadzić, bo strona się za mocno powiększy.

"width: 710px;" to szerokoć całego box'u. Można ją zmieniać, tak aby blog zajmował całą szerokość ekranu (ten wymiar zależy od rozdzielczości), jednak trzeba wówczas pamiętać o dostosowaniu do tej szerokości wszystkich elementów bloga (jeśli zmienisz tylko szerokość ramki tytułowej, wpisy do bloga nadal będą zachowywać dawną szerokość.

"margin-bottom: 5px" określa dolny margines naszego box'u (czyli odległość tytułu od dolnej krawędzi).

Co tu można jesze dodać?

  • Nasz box z tytułem może mieć ramkę. By ją określić dodajemy wpis "3px border: solid #000;" Oczywiście może mieć dowolną grubość i kolor. Moze też nie być "solid" (ciągły) a "thin dotted". Możliwości jest bardzo wiele.
  • Oprócz szerokości, możemy oczywiście określić wysokość box'u, wstawiając parametr "height 100px;" - jak zwykle wysokość możemy zmieniać w zależności od potrzeb.
  • Podobnie z marginesami - możemy ustalić wielkość wszystkich marginesów, nie tylko dolnego, wpisując "Margin-top: 5px;" dla marginesu górnego, "Margin-left: 5px;" dla lewego i "Margin-right: 5px;" dla prawego.

Mamy już obrazek, a na nim wyświetla się tytuł. Jak go usunąć?
Odnajdujemy w CSS'ie pozycję "#BlogTytulText"

Jeżeli w pierwszej linijce, po znaku { wpiszemy "display: none;", pozostałe wartości nie będą już miały znaczenia, ponieważ wydaliśmy tym samym polecenie nie wyświetlania nazwy bloxa.
Ważne! Jeśli usuwasz tytuł bloga, a chcesz by widoczny był obrazek, pamiętaj o ustawieniu wysokości box'u!
Pamiętaj, by na końcu każdej wartości stawiać średnik!

Jeżeli wszystko poszło dobrze, obrazek powinien wyglądać tak jak u mnie.

W ten sam sposób można zmieniać tło we wszystkich box'ach. Wskazówki, który jest który znajdziesz tu.

1 ... 51
 
bloxowe porady

RSS


dodaj do netvibes

Add to Google


pobierz Spiceworks - darmowe oprogramowanie do zarządzania infrastrukturą IT