SQLの窓

2009年09月14日


Flex3 : Alert の OK/CANCEL を判断する

要点
Flex では、処理が全て非同期なので、Alert を表示して閉じた後に結果を知る為には、
JavaScript のようにその後にコードを書いても処理された後になってしまいます。

ですから Alert の引数に function を設定してイベント登録します。
ここでは、Alert の記述内に function を定義しています。
( ここでしか使わない場合はこのほうがメンテナンス性に優れています )
// *****************************************************
// HTTPServiceが成功
// *****************************************************
private function resultHandler(e:ResultEvent):void {

	if ( e.token.reqId == 'main' ) {
		Alert.buttonWidth = 150;
		Alert.show(
			e.result.toString(),
			"入力した値を表示しています",
			Alert.OK | Alert.CANCEL,
			// 親
			null,
			function(e:CloseEvent):void {
				if ( e.detail == Alert.OK ) {
					firebug("OK");
				}
				if ( e.detail == Alert.CANCEL ) {
					firebug("CANCEL");
				}
			},
			// アイコン画像
			null,
			// デフォルトのボタン
			Alert.CANCEL
		);
	}

	firebug("データを受信しました");
	firebug("リクエスト : " + e.token.reqId );

}



posted by lightbox at 2009-09-14 18:13 | Flex | このブログの読者になる | 更新情報をチェックする

Flex3 : HTTP 要求に ID を付加して受信時に区別する

注意事項
PHP 側は http ヘッダでキャッシュを制御してかならずサーバから受信できるようにします。( POST メソッドを使っても良いですがソース側で考慮しないとphpのデバッグが面倒になります )
// ************************************************
// HTTPServiceを使用してHTTPリクエスト(GET)を行う
// ************************************************
private function sendData():void {
	// ● リクエストするURLをセット
	// ★ http:// で記述すると、ベースが ローカルでも動作します
	srv.url = "response.php";

	srv.request.fld1 = fld1.text;
	srv.request.fld2 = fld2.text;
	srv.request.fld3 = fld3.text;

	// レスポンス結果のデータフォーマット
	srv.resultFormat = "text";
	srv.method = "GET";

	// リクエストを区別する処理
	var at:AsyncToken = srv.send();
	// 適当なプロパティを作成して値をセット
	at.reqId = "main";

	firebug("データを送信しました");

}


// ************************************************
// HTTPServiceが成功
// ************************************************
private function resultHandler(e:ResultEvent):void {

	if ( e.token.reqId == 'main' ) {
		Alert.show(e.result.toString(),"入力した値を表示しています");
	}

	firebug("データを受信しました");
	firebug("リクエスト : " + e.token.reqId );

}




タグ:flex Flash
posted by lightbox at 2009-09-14 16:36 | Flex | このブログの読者になる | 更新情報をチェックする

PHP : セッションによるログインテスト

注意事項
※ SHIFT_JIS です。
※ テストする為の雛型ですので、その機能を最優先しています
■ $_GET の内容を $_POST に転送後、SHIFT_JIS の問題と、クォートの対応をしています
■ 送信するとログイン状態で、リダイレクトされます( GET 状態になります )
■ ログイン状態ですと、session_id が表示されるので、セッションの有効を確認できます
( 再送信して、session_id が変わらなければ OK )

<?
session_start();
header( "Content-Type: text/html; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\\\", "\\", $Value );
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}

if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
	$_SESSION['login'] = 'yes';
	header( "Location: ./login.php" );
	exit();
}

if ( $_SESSION['login'] == 'yes' ) {
	print session_id() . "<br>";
}

?>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>HTML テンプレート</TITLE>
<STYLE type="text/css">
* {
	font-family: "MS Pゴシック";
	font-size: 12px;
}
BODY {
	background-color: forestgreen;
	color: white;
}
</STYLE>
<SCRIPT language="javascript" type="text/javascript">

// *********************************************************
// フォームのチェック
// *********************************************************
function CheckData() {

	return true;
}

</SCRIPT>
</HEAD>

<BODY>

<h3>ログイン</h3>
<FORM
	name="frmMain"
	method="POST"
	onSubmit='return CheckData()'
>

<INPUT type="text" name="inField">
<br>
<TEXTAREA name="inText" cols="80" rows="15">
上のフィールドとこの入力エリアはサンプルです。
処理は実装されていません
</TEXTAREA>
<br>

<HR>

<INPUT name="send" type="submit" value="送信">

</FORM>

</BODY>
</HTML>



posted by lightbox at 2009-09-14 15:50 | PHP + WEBアプリ | このブログの読者になる | 更新情報をチェックする

Flex3 : ブラウザのアドレス変更

_self を _blank にすると、新しいウインドウ( またはタブ ) が開きます
// *********************************************************
// PHP のログイン画面へジャンプ
// *********************************************************
private function jumpLogin():void {

	var req:URLRequest = new URLRequest("./login.php");
	navigateToURL(req, "_self");

}

<mx:Button
	id="btnLogin"
	label="ログイン"
	click="jumpLogin()"
	styleName="sendButton"
/>

関連する記事
Flex3 : コマンドプロンプトで行う開発の準備


posted by lightbox at 2009-09-14 15:00 | Flex | このブログの読者になる | 更新情報をチェックする

2009年09月12日


コマンドプロンプト : クリップボードにあるファイル情報を標準出力へ

バイナリダウンロード ( cf.exe )

ブラウザでダウンロード
エクスプローラでファイルを選択してクリップボードにコピーしても、テキストデータとして取り出す事ができません。このデータを標準出力に出力してコマンドプロンプトで使用できます。
Imports System.Collections.Specialized

Module MyModule

' ***********************************************
' * クリップボードにあるファイル情報を標準出力へ
' ***********************************************
Sub Main()

	' 引数による処理タイプの決定
	' name : ファイル名のみ
	' path : フルパス
	Dim argv As String()
	argv = System.Environment.GetCommandLineArgs()
	Dim ActType As String
	If argv.Length = 1 Then
		ActType = "name"
	Else
		' name または path
		ActType = argv(1)
	End If
	' SHIFT キーを感知できた場合は処理を反転する
	If My.Computer.Keyboard.ShiftKeyDown Then
		If ActType = "name" Then
			ActType = "path"
		else
			ActType = "name"
		End If
	End If

	Dim FileList As StringCollection
	Dim FilePath As String
	Dim ClipString As String = ""
	Dim delimStr As String = "\"
	Dim delimiter As Char() = delimStr.ToCharArray()
	Dim aData As String()

	' クリップボードにファイルのデータがあった場合
	If My.Computer.Clipboard.ContainsFileDropList() Then
		'データを取得する
		FileList = My.Computer.Clipboard.GetFileDropList()
		'取得したファイル名を列挙する
		For Each FilePath In FileList
			If ActType = "path" Then
				Console.WriteLine( FilePath )
			Else
				aData = FilePath.Split(delimiter)
				Console.WriteLine( aData(aData.Length - 1) )
			End If
		Next
	End If


End Sub

End Module





タグ:VB.NET
posted by lightbox at 2009-09-12 22:34 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

コマンドプロンプト : バッチファイルで使う for コマンドの変数展開のテスト( vtest.bat )

%~nx0 は、call コマンドの引数を展開する変数です
( ここでは、vtest.bat になります )

よくよく見ると、展開される内容を意味する一文字が使われています。

x = > extension
z => size
s => short name
@echo off

for %%i in ( %~nx0 ) do (
	echo ~   : そのまま : %%~i
	echo ~f  : フルパス : %%~fi
	echo ~d  : ドライブ : %%~di
	echo ~p  : パス     : %%~pi
	echo ~n  : 名前     : %%~ni
	echo ~x  : 拡張子   : %%~xi
	echo ~s  : 短い名前 : %%~si
	echo ~a  : 属性     : %%~ai
	echo ~t  : タイムスタンプ : %%~ti
	echo ~z  : サイズ   : %%~zi
	echo ~dp : 結合 : %%~dpi
)

Vtest

関連する記事
laylaClass バッチ処理支援パッケージ


posted by lightbox at 2009-09-12 13:00 | コマンド : バッチファイル | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり